如何让Scrapy的SitemapSpider在大于1的深度爬行?

时间:2016-02-22 21:58:36

标签: python scrapy scrapy-spider

我正在尝试使用Scrapy记录站点内发生的每个链接。我正在使用SitemapSpider,但查看生成的CSV显示Spider永远不会达到超过1的深度 - 我希望它跟随它遇到的每个链接并从这些链接中抓取链接。默认情况下,深度限制应该是无限制的,但我在settings.py中添加了DEPTH_LIMIT为5作为测试,它没有任何效果。

(此外,“other_urls”规定似乎没有效果 - 该网址中没有显示任何结果。)

import scrapy
from tutorial.items import fffItem
from scrapy.spiders import SitemapSpider

class fffSpider(SitemapSpider):
    name = "fff_sitemap"
    sitemap_urls = ["http://fff.com/sitemap.xml"]
    other_urls = ["http://www.fff.com/fff/default.aspx"]


    def parse(self, response):
        items = []
        for sel in response.xpath('//a'):
            item = fffItem()
            item['link'] = sel.xpath('@href').extract()
            item['sourceurl'] = response.url
            item['depth'] = response.meta['depth']
            items.append(item)
        return items

我对Scrapy / Python一般都是新手,并查看了涉及SitemapSpider的已回答问题,但它们要么不适用,要么我没有完全理解它们。如果这是重复,请道歉。

1 个答案:

答案 0 :(得分:0)

您正在寻找的是sitemap_follow类论证 默认情况下,会遵循所有站点地图链接,因此深度最大可能。