如何在使用scrapy链接提取器时提取重复项?

时间:2018-12-17 18:04:31

标签: python scrapy rules

我正在尝试提取类别页面上存在的多个产品网址。对于同一个我想针对类别页面URL获得多个产品URL,但是由于一种产品可以出现在各个类别页面上,因此,沙哑地将其过滤掉了。如何防止这种情况,因为dont filter = True在这里不起作用?另外,有一种方法可以使scrapy不检查提取的URL的response.status状态,而只是将其输出。

import scrapy
import csv
from scrapy.spiders import SitemapSpider
from scrapy.spider import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import XMLFeedSpider


class ExtractSpider(CrawlSpider):
    s = []
    with open('C:\\Users\\Vishal\\Desktop\\kk.csv') as f:
        csv_read = csv.reader(f)
        next(csv_read)
        for line in csv_read:
            s.append(line[0])
    name = 'Extract'
    allowed_domains = ["abyexample.com"]
    start_urls = s
    rules = [Rule(LinkExtractor(allow=('https://abyexample/product')), callback="parse_link", follow=False)]

    def parse_link(self, response):
        yield {
        "main":response.request.headers.get('referer'),"response":response.url}

2 个答案:

答案 0 :(得分:0)

unique=False传递到LinkExtractor

答案 1 :(得分:-1)

您可以通过将最终链接列表转换为set()来提取重复项。

类似set([0,1,1,2,1,3,5])的结果将导致{0,1,2,3,5},删除重复的值。

希望有帮助!