gpt4 book ai didi

python - 如何改变scrapy中的请求顺序?

转载 作者:太空宇宙 更新时间:2023-11-03 17:04:00 24 4
gpt4 key购买 nike

我正在尝试将多个页面合并为一个项目:

A
|-- a
|-- b
|-- c
B
|-- a
...

通过抓取页面 A 及其子页面(a、b、c),我将获得 1 项。我的代码很大,但这是缩小的版本:

class MySpider(scrapy.Spider):
def parse(self, response):
for li in response.xpath('//li'):
item = MyItem()
...
meta = {
'item': item,
'href': href,
}
url = response.urljoin(href + '?a')
yield scrapy.Request(url, callback=self.parse_a, meta=meta)

def parse_a(self, response):
...

url = response.urljoin(href + '?b')
yield scrapy.Request(url, callback=self.parse_b, meta=meta)


def parse_b(self, response):
...

url = response.urljoin(href + '?c')
yield scrapy.Request(url, callback=self.parse_c, meta=meta)


def parse_c(self, response):
...
yield item

脚本工作正常,但问题是:爬虫按以下顺序抓取页面:A、B、C、Aa、Ba、Ca、Ab、Bb、...,因为页面太多要抓取的页面 在抓取所有页面之前,不会保存任何内容。当我在解析方法上将 yield 更改为 return 时,它会按照我想要的 A, Aa, Ab, Ac 方式进行抓取,但它不会抓取B、C、...

最佳答案

如果你想强制执行这种类型的订单,我现在能想到的唯一方法就是在 Item Pipeline 中指定订单。这样您将返回 Ac Bc Cc ...

关于python - 如何改变scrapy中的请求顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34747189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com