gpt4 book ai didi

python - 如何使用 python 请求检查 HTML 中的更新

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:18 25 4
gpt4 key购买 nike

我正在尝试监控页面是否有任何更新。但是,我需要保留相同的 session 和 cookie,所以我不能只发送一个全新的请求。

如何在当前请求中检查 HTML 中的更新?页面不仅会更新,还会重定向,但 URL 保持不变。

这是我当前的代码:

import requests

url = 'xxx'

headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'
}

response = requests.get(url, headers=headers, allow_redirects=True, config={'keep_alive': True})


def get_status():
html = response.text # this should be the current HTML, not the HTML when I made the initial request
if x in html:
status = "exists"
else:
status = "null"

return status


print(get_status())

编辑:我将使用 while 循环每 5 秒运行一次此函数以检查状态是否为 =“存在”。

EDIT2:我尝试通过 requests_html 实现它,但我没有收到应有的 cookie:

import requests_html
from requests_html import HTMLSession

session = HTMLSession()
session.headers.update({'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'})
r = session.get('x')
r.html.render(reload=False)
print(r.cookies.get_dict())

最佳答案

However, I need to keep the same session and cookies so I can't just send a whole new request.

你想在这里做的是使用

打开一个 session
s = requests.Session()
response = s.get("http://www.google.com")

这将确保跨请求保留 cookie 和某些其他内容。导航至 the documentation of Sessions了解更多详情。

因为您只是想检查返回的 html 是否与之前的请求完全相同,只需将第一个 response.text 保存在您的函数之外并检查您的新 response. text 等于之前保存的那个。

如果网站动态显示任何内容,这当然不会奏效,但如果您可以检查 DOM 中的特定元素并将其与之前请求的对象进行比较,这就可以正常工作。

关于python - 如何使用 python 请求检查 HTML 中的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49879471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com