使用Scrapy以递归方式刮取域名以获取链接

时间:2017-10-14 05:28:09

标签: python scrapy scrapy-spider

以下是我用于抓取域名所有网址的代码:

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors.lxmlhtml import LxmlLinkExtractor

class UrlsSpider(scrapy.Spider):
    name = 'urlsspider'
    allowed_domains = ['example.com']
    start_urls = ['http://example.com/']

    rules = (Rule(LxmlLinkExtractor(allow=(), unique=True), callback='parse', follow=True))

    def parse(self, response):
        for link in LxmlLinkExtractor(allow_domains=self.allowed_domains, unique=True).extract_links(response):
            print link.url

            yield scrapy.Request(link.url, callback=self.parse)

正如您所看到的,我已经使用了unique=True,但它仍在终端中打印重复的网址,而我只想要唯一的网址,而不是重复的网址。

任何有关此事的帮助都会非常有帮助。

1 个答案:

答案 0 :(得分:0)

由于代码以递归方式查看URL的内容,您将看到解析其他页面时出现的重复URL。你基本上有LxmlLinkExtractor()的多个实例。