python 实时获取网站的动态数据

https://m.sogou.com/web/searchList.jsp?keyword=%E7%83%AD%E6%90%9C%E6%A6%9C
如监控热搜右边人数,希望有详细讲解

写个爬虫定时爬取更新数据,把每一条热搜旁边的那个热度值数字爬下来不就行了

该回答引用GPTᴼᴾᴱᴺᴬᴵ
要实时获取网站的动态数据,可以使用 Python 的第三方库 requests 和 BeautifulSoup,以及 Chrome 开发者工具。
·
首先,使用 requests 库向目标网站发送 GET 请求,获取网页的 HTML 内容。然后,使用 BeautifulSoup 库解析 HTML,定位到需要的数据所在的 HTML 元素。
·
但是,有些网站的数据是通过 Ajax 技术动态加载的,即网页初次加载时,页面上并不包含所有的数据,而是在用户与网页交互的过程中,通过 Ajax 技术向服务器请求数据并动态更新页面。对于这种情况,我们需要借助 Chrome 开发者工具来分析 Ajax 请求的 URL 和参数,然后使用 requests 库向该 URL 发送 POST 请求获取数据。
·
以下是一个实现实时获取搜狗热搜榜右侧人数的 Python 代码:

import requests
from bs4 import BeautifulSoup
import time

# 目标网页 URL
url = 'https://m.sogou.com/web/searchList.jsp?keyword=%E7%83%AD%E6%90%9C%E6%A6%9C'

# 伪装请求头,以避免被服务器防护机制拦截
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

while True:
    # 发送 GET 请求获取网页 HTML
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.content, 'html.parser')

    # 定位到热搜榜右侧人数的 HTML 元素,并获取人数
    count = soup.select_one('.people_count').text.strip()

    # 输出当前时间和人数
    print(time.strftime('%Y-%m-%d %H:%M:%S'), count)

    # 等待 5 秒后再次获取数据
    time.sleep(5)


该代码会不断地输出当前时间和热搜榜右侧人数,每次间隔 5 秒。其中,select_one('.people_count') 使用 CSS 选择器定位到 class 为 people_count 的 HTML 元素,.text.strip() 获取该元素的文本内容并去除首尾空格。