我编写了一段代码来抓取binance公告站点(https://www.binance.com/en/support/announcement/c-48?navId=48),获取最后一个标记并对其执行一些操作。问题是,当Binance发布一个带有新标签的新公告时,我的代码会在3-5分钟后检测到它。所以它有3-5分钟的延迟。此外,我在我的个人网站上尝试了同样的代码,它在没有任何延迟的情况下工作得很好。为什么会出现这种情况?是什么原因导致了这个问题?
session = requests_cache.CachedSession('demo_cache')
####### first check of <a> ########
def getFirstLink():
pageForFirstCheck = session.get(siteUrl)
soupForFirstCheck = BeautifulSoup(pageForFirstCheck.content, "html.parser")
resultForFirstCheck = soupForFirstCheck.find('div', class_='css-6f91y1')
firstDiv = resultForFirstCheck.find('div', class_='css-vurnku')
firstLink = firstDiv.find('a')
prevLink = firstLink.get_text() # <a> cel mai de sus
return prevLink另外,我将这个函数包装在一个while True循环中:
while True:
time.sleep(random.randint(1, 5))
try:
stringThatCameFromLink = getFirstLink()
# and it does something with that link提前谢谢你!
发布于 2021-10-22 08:12:23
我认为问题在于cloudflare服务器正在缓存文档。或者这是二进制程序员故意做的,这样一小撮人就可以比其他人更快地对新闻做出反应。如果你想获得新的数据,这是一个很大的问题。如果查看HTTP标头,您会注意到"Date:“标头被服务器缓存,这意味着文档的整个内容都被缓存。如果我添加或删除gzip头文件,我设法得到两个不同的"Date:“。“接受-编码: gzip,deflate”。我使用的是页面https://www.binance.com/bapi/composite/v1/public/cms/article/catalog/list/query?catalogId=48&pageNo=1&pageSize=15如果您更改了"pageSize“参数,您可以从服务器获得最新的缓存响应。但这仍然不能解决5分钟的延迟问题。我还能看到以前的那一页。你的链接和我的一样是https://www.binance.com/en/support/announcement/c-48?navId=48的,https://www.binance.com/bapi/composite/v1/public/cms/article/catalog/list/query?catalogId=48&pageNo=1&pageSize=15也被缓存了5秒。我猜也会有5分钟的延迟。我还没有找到解决这个问题的办法。
https://stackoverflow.com/questions/69522516
复制相似问题