为什么当我解析一个网站时,我会从网站中获取旧数据,有时是网站中的当前数据

2024-10-05 14:23:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在抓取一个网站,我正在检索一张表和一行日期。 一切正常,但当我运行脚本时,我从站点获取当前数据,有时从站点获取昨天的值

当我进入网站时,数据总是更新的

这是我代码的一部分,完整代码位于: http://pythonfiddle.com/lme

url = 'https://www.lme.com/en-gb/metals/non-ferrous/#tabIndex=0'
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
dateFromSite = soup.find('div', class_='delayed-date').text.strip()

Tags: 数据代码texthttps脚本comhttpurl
1条回答
网友
1楼 · 发布于 2024-10-05 14:23:42

查看从页面获得的HTTP头,站点正在使用Cloudflare缓存请求。所以有时候你会得到“旧”版本的页面

您可以尝试使用http 'Cache-Control: no-cache, must-revalidate'头和/或使用添加到url的随机参数来规避此问题

例如:

import time

url = 'https://www.lme.com/en-gb/metals/non-ferrous/?_random_number={rn}#tabIndex=0'
headers = {'Cache-Control': 'no-cache, must-revalidate'}

r = requests.get(url.format(rn=time.time()), headers=headers)
#print(r.headers) # should print 'CF-Cache-Status': 'MISS' in headers
soup = BeautifulSoup(r.text, 'html.parser')
dateFromSite = soup.find('div', class_='delayed-date').text.strip()

print(dateFromSite)

相关问题 更多 >