Python:如何抓取页面以获取将用于刮取另一个页面的信息,依此类推?

时间:2016-12-18 13:57:54

标签: javascript python selenium scrapy screen-scraping

我需要构建一个python脚本,旨在抓取一个网页以检索"显示更多"按钮。

然后,此数字将用作参数,以请求将返回包含数据+数字的JSON的URL。最后一个数字将用作参数,以请求将返回包含数据+数字等的JSON的URL。此过程一直持续到JSON返回空数据+数字。当数据为空时,刮刀应该停止。

我使用了Scrapy,但这并不起作用。 Scrapy是异步的,根据我的情况,我需要等待第一个JSON结果给我下一个信息,以便我可以抓第二个URL,依此类推。

您建议我将其用作Python库?我已经读过Selenium的工作,但它比Scrapy慢得多。

1 个答案:

答案 0 :(得分:3)

当您在给定时间有多个URL要刮取时,最好看到Scrapy的异步行为。在这种情况下,只有在解析了前一个请求之后才会将新请求排入队列,所以它不应该是一个问题。

我不知道您的JSON响应的确切结构,因此我们假设您有两个密钥datanumber。您可以使用与此::

类似的解析方法编写Scrapy蜘蛛
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)