我试图获取ajax请求后加载的数据。在
例如,youtube页面的前30个视频是用html显示的,然后用户必须单击一个“loadmore”按钮来触发ajax并获得更多结果。 https://www.youtube.com/user/testedcom/videos
我可以得到ajax链接,但是用蹩脚的特性提取剩余数据/“分页”的最佳方法是什么?
启动外壳:
scrapy shell https://www.youtube.com/user/testedcom/videos
获取ajax继续的url:
^{pr2}$从ajax调用获取新数据:
fetch(url)
…但从这里我不知道该如何处理这些数据。它的格式与运行scrapy shell的原始响应的格式不同。它似乎没有完全加载为JSON。我想斯帕蒂有专门针对这方面的东西,但在文档中找不到。在
编辑 我可以通过以下操作获取html内容:
import json
response_json = json.loads(response.body_as_unicode())
html = response_json['content_html']
但是,我必须使用正则表达式从unicode中提取所需的数据,而不是使用更方便的内置xpath选择器。在
获取html内容后,可以初始化选择器对象以使用xpath选择器:
下面是废选择器的文档:http://doc.scrapy.org/en/1.1/topics/selectors.html
我也遇到过同样的问题。我用选择器处理。您可以通过响应或字符串构造选择器,然后可以使用“xpath”。在
另外,您可以使用
try...except...
来标识响应的类型(html或json)相关问题 更多 >
编程相关推荐