Python : 如何抓取一个页面以获取将用于抓取另一个页面的信息,等等?

Python : How to scrape a page to get an information that will be used to scrape another one, and so on?

我需要构建一个 python 脚本,旨在抓取网页以检索 "Show More" 按钮中的数字。

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

我用过Scrapy,但是这个不行。 Scrapy 是异步的,根据我的情况,我需要等待第一个 JSON 结果给我下一个信息,这样我才能抓取第二个 URL,依此类推。

您建议我将什么用作 Python 库?我读过 Selenium 可以完成这项工作,但它比 Scrapy 慢得多。

当您在给定时间有多个 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)