Scrapy 从爬行蜘蛛导出唯一项

Scrapy 从爬行蜘蛛导出唯一项,scrapy,Scrapy,我正在使用scrapy的CrawlSpiderspider类来迭代start\u URL的列表,并对每个站点的内部页面进行爬网以获取电子邮件地址。我想导出一个文件,每个start_url都有一个单独的(唯一的)项目,以及匹配的电子邮件列表。为此,我需要重写make\u requests\u from\u url和parse方法,这样我就可以将响应元目录(参见代码)中的每个start\u url项传递到内部页面。运行此代码的输出为: www.a.com,['webmaster@a.com'] ww

我正在使用scrapy的
CrawlSpider
spider类来迭代
start\u URL的列表,并对每个站点的内部页面进行爬网以获取电子邮件地址。我想导出一个文件,每个start_url都有一个单独的(唯一的)项目,以及匹配的电子邮件列表。为此,我需要重写
make\u requests\u from\u url
parse
方法,这样我就可以将响应元目录(参见代码)中的每个start\u url项传递到内部页面。运行此代码的输出为:

www.a.com,['webmaster@a.com']
www.a.com,['webmaster@a.com','info@a.com']
www.a.com,['webmaster@a.com','info@a.com','admin@a.com']
但是,我只希望导出文件包含上述输出的最后一个条目

(www.a.com,['admin@a.com,webmaster@a.com, info@a.com”)

可能吗

代码:

class MySpider(CrawlSpider):

    start_urls = [... urls list ...]

    def parse(self, response):
        for request_or_item in CrawlSpider.parse(self, response):
            if isinstance(request_or_item, Request):
                request_or_item.meta.update(dict(url_item=response.meta['url_item']))
            yield request_or_item

    def make_requests_from_url(self, url):
        # Create a unique item for each url. Append email to this item from internal pages
        url_item = MyItem()
        url_item["url"] = url
        url_item["emais"] = []

        return Request(url, dont_filter=True, meta = {'url_item': url_item})

    def parse_page(self, response):
        url_item = response.meta["url_item"]
        url_item["emails"].append(** some regex of emails from the response object **)
        return url_item

您可以使用
管道
处理项目


请参阅Scrapy文档中的。

当爬行器关闭时转储消息如何?