Scrapy - 使用选择器嵌套 link 提取

Scrapy - nested link extraction using selectors

我遇到以下问题:有一个网站是爬虫的起点(“起点 URL”)

https://www.example.com

在该页面上,有一个链接列表,我可以使用选择器以这种方式获得:

response.css('div[id=aaaaa][class=bbbbb] a::attr(href)').getall()

在上述命令返回的每个页面中,有一个链接列表,我可以使用选择器以这种方式获得:

response.css('td[class=ccccc] a::attr(href)').getall()

这些是我真正想要抓取的“尾页”。问题是我不认为我可以使用规则来实际地做到这一点,因为链接并没有真正遵循一条规则,比如“Rule(LinkExtractor(allow=('HEREARETHETHINGSYOUWANTLOL.php', ))”,并且我想要的链接是“嵌套”的,可以这么说

基本上我有两个问题:

  1. 如何让 scrapy 抓取所有“结束链接”
  2. “结束链接”在“https://www.example.com/aaa/bbb/ccc”格式中不是,它们在“aaa/bbb/ccc" 格式。这会是个问题吗?

为了后代:我设法弄明白了。你就是这样做的:

def parse(self, response):
    for sel in response.css('div[id=aaaaa][class=bbbbb] a'):
        yield scrapy.Request("https://www.example.com"+sel.css('a::attr(href)').get(), callback=self.parse_2)

def parse_2(self, response):
    for sel in response.css('td[class=ccccc] a'):
        yield scrapy.Request("https://www.example.com" + sel.css('a::attr(href)').get(), callback=self.parse_3)

def parse_3(self, response):
    for stf in response.css('yourelement'):
        yield {
            'somethingyouactuallywanttoscrape': "etc"
        }