我需要构建一个python脚本,旨在抓取一个网页以检索"显示更多"按钮。
然后,此数字将用作参数,以请求将返回包含数据+数字的JSON的URL。最后一个数字将用作参数,以请求将返回包含数据+数字等的JSON的URL。此过程一直持续到JSON返回空数据+数字。当数据为空时,刮刀应该停止。
我使用了Scrapy,但这并不起作用。 Scrapy是异步的,根据我的情况,我需要等待第一个JSON结果给我下一个信息,以便我可以抓第二个URL,依此类推。
您建议我将其用作Python库?我已经读过Selenium的工作,但它比Scrapy慢得多。
答案 0 :(得分:3)
当您在给定时间有多个URL要刮取时,最好看到Scrapy的异步行为。在这种情况下,只有在解析了前一个请求之后才会将新请求排入队列,所以它不应该是一个问题。
我不知道您的JSON响应的确切结构,因此我们假设您有两个密钥data
和number
。您可以使用与此::
def parse(self, response):
result = json.loads(response.body)
# do something with the data
# request next page
if result['data']:
next_url = ... # construct URL using result['number']
yield Request(next_url)