Scrapy链接提取器拒绝之前抓取的链接

1 投票
1 回答
587 浏览
提问于 2025-04-17 15:10

我正在用Scrapy中的CrawlSpider类构建一个爬虫。我怀疑链接提取器会不断重复抓取相同的链接。有没有办法限制链接提取器,拒绝那些已经抓取过的链接?这个可以不使用正则表达式来实现吗?

My Rules look like this:

{

rules = (
    #Rule(SgmlLinkExtractor((allow='profile')), follow=True),
    Rule(SgmlLinkExtractor(deny='feedback\.html'),callback='parse_item', follow=True),
    )

}
And my parse_item is:

{

def parse_item(self, response):
    hxs = HtmlXPathSelector(response)
    element = hxs.select('//table[@id="profilehead"]/tr/td/a/@href').extract()
    try:
        open('urls.txt', 'a').write(element[0])
        open('urls.txt', 'a').write('\n')
    except IndexError:
        # Site doesn't have link to another website
        pass

}

1 个回答

0

我觉得 Scrapy 不会跟踪已经访问过的链接。不过,如果你想限制某些部分不被跟踪的话,可以试试下面这个方法:

restrict_xpaths=('//a[starts-with(@title,"Next ")]')),

你可以在这里找到更多信息:http://doc.scrapy.org/en/latest/topics/link-extractors.html

撰写回答