抓取多个不同深度的起始URL

2024-04-20 00:02:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让Scrapy 0.12更改spider中start_url变量中不同url的“最大深度”设置。在

如果我正确地理解了文档,就不可能了,因为深度限制设置对于整个框架是全局的,并且没有“请求源于初始框架”的概念。在

有没有办法绕过这个问题?是否可以使用每个起始url和不同的深度限制初始化同一个spider的多个实例?在


Tags: 实例文档框架概念url全局startspider
1条回答
网友
1楼 · 发布于 2024-04-20 00:02:37

抱歉,看来我一开始就没听懂你的问题。更正我的答案:

响应在meta中有depth键。你可以检查一下并采取适当的行动。在

class MySpider(BaseSpider):

    def make_requests_from_url(self, url):
        return Request(url, dont_filter=True, meta={'start_url': url})

    def parse(self, response):
        if response.meta['start_url'] == '???' and response.meta['depth'] > 10:
            # do something here for exceeding limit for this start url
        else:
            # find links and yield requests for them with passing the start url
            yield Request(other_url, meta={'start_url': response.meta['start_url']})

http://doc.scrapy.org/en/0.12/topics/spiders.html#scrapy.spider.BaseSpider.make_requests_from_url

相关问题 更多 >