小编典典

如何使用scrapy爬行多个页面?

scrapy

我在Scrapy上找到的所有示例都在谈论如何抓取单个页面,具有相同url模式的页面或网站的所有页面。我需要抓取一系列页面A,B,C,其中在A中你具有到B的链接,依此类推。例如,网站结构为:

A
----> B
---------> C
D
E

我需要爬网所有C页面,但是要获取到C的链接,我需要在A和B之前进行爬网。有什么提示吗?


阅读 642

收藏
2020-04-09

共1个答案

小编典典

参见scrapy Request结构,要抓取此类链,你将必须使用如下所示的callback参数:

class MySpider(BaseSpider):
    ...
    # spider starts here
    def parse(self, response):
        ...
        # A, D, E are done in parallel, A -> B -> C are done serially
        yield Request(url=<A url>,
                      ...
                      callback=parseA)
        yield Request(url=<D url>,
                      ...
                      callback=parseD)
        yield Request(url=<E url>,
                      ...
                      callback=parseE)

    def parseA(self, response):
        ...
        yield Request(url=<B url>,
                      ...
                      callback=parseB)

    def parseB(self, response):
        ...
        yield Request(url=<C url>,
                      ...
                      callback=parseC)

    def parseC(self, response):
        ...

    def parseD(self, response):
        ...

    def parseE(self, response):
        ...
2020-04-09