在url不更改时解析数据(分页)

时间:2017-09-06 17:34:43

标签: javascript python ajax parsing web-scraping

我有兴趣解析来自here的数据。但是,除了默认页面之外,我无法older newerurl数据,因为python 3.6地址没有变化。我如何在默认页面上获取除此之外的数据?我一直在努力寻找解决方案,真的很感激任何帮助。我正在使用lxmlrequestsurls进行解析CREATE VOLATILE TABLE new_tble AS (SELECT * FROM table QUALIFY row_number() OVER (partition BY ID ORDER BY ID, DATE, AMOUNT)=1 WHERE DELETE <> 'D' ) with data;

2 个答案:

答案 0 :(得分:2)

根据查看开发工具网络请求,您可以看到在默认页面上选择新日期时,会发出以下GET请求:

基本网址:

https://markets.ft.com/data/world/ajax/getnextecoevents?

查询参数(您必须对过滤器字典进行urlencode)

startDate=2017-09-04&filter={"keyword":"","impact":"","countries":[]}

因此,只需提出您需要的日期请求,并使用urllib对剩余的过滤器参数进行urlencode。这应该可以满足您的需求。

答案 1 :(得分:2)

该网站的运作方式:

首次加载页面时,它会加载HTML中的当前数据。只要您在分页中点击oldernewer,就会向此网址发出GET个请求:

https://markets.ft.com/data/world/ajax/getnextecoevents?rowId=79519&scrollForward=true&filter=%7B%22keyword%22%3A%22%22%2C%22impact%22%3A%22%22%2C%22countries%22%3A%5B%5D%7D`

请注意网址参数:

rowId, scrollForward, filter

<强>解决方案:

对上面的URL发出自定义请求,但只是递减或递增rowId参数以滚动页面。

例如:

GET https://markets.ft.com/data/world/ajax/getnextecoevents?rowId=79519
GET https://markets.ft.com/data/world/ajax/getnextecoevents?rowId=79520
GET https://markets.ft.com/data/world/ajax/getnextecoevents?rowId=79521