以下是我用于抓取域名所有网址的代码:
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
,但它仍在终端中打印重复的网址,而我只想要唯一的网址,而不是重复的网址。
任何有关此事的帮助都会非常有帮助。
答案 0 :(得分:0)
由于代码以递归方式查看URL的内容,您将看到解析其他页面时出现的重复URL。你基本上有LxmlLinkExtractor()的多个实例。