抓取网页时拦截AJAX调用

时间:2019-05-09 18:50:17

标签: python ajax web web-scraping

我正在尝试抓取一个appStore,尤其是每个应用程序的评论。问题在于,评论是动态的,客户端正在进行AJAX POST调用以获取该数据。还在为每个页面动态生成此调用的有效负载。我想知道是否有任何方法可以通过代码截取此请求以获取有效负载,从而可以使用请求或任何其他库进行调用。我可以使用从网络浏览器的检查网络活动实用工具中获取的参数通过POSTMAN进行此调用。

我可以使用硒来刮除最终加载的页面,但是它等待整个页面加载,这是高度未优化的,因为我不需要等待整个页面加载。

payload = "<This is dynamically created for every page and is constant for that given page>"
header = {"Content-Type": "application/x-www-form-urlencoded"}
url = 'https://appexchange.salesforce.com/appxListingDetail'

r = requests.post(url=url, data=payload, headers=header)

我想知道是否有可能通过刮板获取此有效载荷,该刮板在尝试刮除基本网页时可以拦截所有AJAX调用。

1 个答案:

答案 0 :(得分:0)

如果要剪贴包含脚本和动态内容的页面,建议使用phantomJs

这是一个无头脚本编写的浏览器,它完全像浏览器一样加载页面,其中包含所有动态内容和脚本。因此,您只需等待页面完成加载,然后阅读呈现的内容

您也可以使用selenium

也可以检查一下:a list of almost all headless browsers