相关疑难解决方法(0)

Scrapy设置每个allowed_domains的深度限制

我正在抓取6个不同的allowed_domains,并希望限制1个域的深度.我如何在scrapy中限制1个域的深度?或者是否可以只抓取1个深度的异地域?

python web-crawler scrapy web-scraping

7
推荐指数
1
解决办法
6157
查看次数

Scrapy Crawl Spider 只刮取一定数量的层数

您好,我想使用 Scrapy CrawlSpider 类(此处的文档)抓取网络的所有页面。

class MySpider(CrawlSpider):
    name = 'abc.com'
    allowed_domains = ['abc.com']
    start_urls = ['http://www.abc.com']

    rules = (
        Rule(SgmlLinkExtractor(allow=('item\.php', )), callback='parse_item')
    )

    def parse_item(self, response):
        self.log('Hi, this is an item page! %s' % response.url)
        ...
Run Code Online (Sandbox Code Playgroud)

(1) 因此,这个蜘蛛将从 start_urls 中定义的页面 www.abc.com 开始,它会自动进行解析...然后跟踪 www.abc.com 中的每个链接,该链接位于规则对吗?我想知道有没有办法让我只能刮一定数量的层..比如说只刮第一层(直接来自 www.abc.com 的链接)?

(2) 由于我在 allowed_deomains 中定义了只有 abc.com url 会被抓取。所以我不需要在规则中重新定义它?并做这样的事情:

Rule(SgmlLinkExtractor(allow=('item\.php', )), allow_domains="www.abc.com", callback='parse_item')
Run Code Online (Sandbox Code Playgroud)

(3)如果我使用crawlspider,如果我不在spider类中定义规则会发生什么?它会抓取所有页面吗?或者它甚至不会遵循任何一条,因为规则尚未得到“满足”?

python scrapy

4
推荐指数
1
解决办法
2867
查看次数

标签 统计

python ×2

scrapy ×2

web-crawler ×1

web-scraping ×1