我正在从investing.com刮取经济日历表。我正在使用美丽汤,并要求图书馆。我使用post方法进行查询,但似乎找不到从表中包含200行以上的数据响应的方法。
如果在更新表过滤器时查看网络流量,则可以看到有一个“ getCalendarFilteredData”请求。我基于此发布请求。我尝试更改代码中下面显示的标头和查询参数,但无法弄清楚。我可以帮忙。这就是我所拥有的:
url = 'https://in.investing.com/economic-calendar/Service/getCalendarFilteredData'
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
"x-requested-with": "XMLHttpRequest"
}
query = {
"country[]": [17, 25, 6, 37, 5, 72, 22, 39, 35, 4],
"importance[]": [1, 2, 3],
"dateFrom": start_date,
"dateTo": current_date,
"timeZone": 58,
}
对于请求:
with requests.Session() as s:
try:
web = s.post(url, headers=header, data=query)
soup = BeautifulSoup(web.json()['data'], 'html.parser')
rows = soup.find_all('tr', {'class': 'js-event-item'})
将数据插入大熊猫数据框中后,无论参数是什么,我都会得到这个大小。
[200行x 7列]
当我尝试从2000年代初期收集数据时,行数应该大大增加。有什么进展提示吗?
答案 0 :(得分:0)
该查询有一个限制,您可以在“ getCalendarFilteredData”响应中看到它。
params:{
limit: "0,200"
}
您可以通过发送params:{"limit_from":2)
获得下一组
如果查看表单数据,则可以在getCalendarFilteredData请求中看到它。我已经测试过,每次可以通过将limit_from参数加1来获得不同的数据。