如何在不同的输入网站上多次同时运行Scrapy scraper并写入不同的输出文件?

时间:2015-11-10 21:01:11

标签: python web-scraping scrapy

有谁知道如何在不同的网站上运行相同的Scrapy刮刀超过200次,每个网站都有各自的输出文件?通常在Scrapy中,通过键入-o filename.json.

从命令行运行输出文件时指示输出文件

2 个答案:

答案 0 :(得分:1)

多种方式:

  • Create a pipeline删除包含可配置参数的项目,例如运行scrapy crawl myspider -a output_filename=output_file.txt。 output_filename作为参数添加到蜘蛛中,现在您可以从以下管道访问它:

    class MyPipeline(object):
        def process_item(self, item, spider):
            filename = spider.output_filename
            # now do your magic with filename
    
  • 您可以run scrapy within a python script,然后使用输出项目执行您的操作。

答案 1 :(得分:0)

我做了类似的事情。这就是我所做的:

  1. 像往常一样编写抓取工具,但请务必实施feed exports。我有Feed导出将结果直接推送到S3存储桶。此外,我建议您接受该网站作为脚本的命令行参数。 (Example here
  2. 设置scrapyd以运行您的蜘蛛
  3. 使用scrapyd-client
  4. 将您的蜘蛛打包并部署到报废
  5. 现在,使用您的网站列表,只需为您的scrapyd进程发出一个curl命令。
  6. 我已经使用上述策略来削减200万个域名,我在不到5天的时间内完成了这项工作。