相关疑难解决方法(0)

如何在scrapy中通过CrawlerProcess传递自定义设置?

我有两个 CrawlerProcesses,每个都调用不同的蜘蛛。我想将自定义设置传递给这些进程之一以将蜘蛛的输出保存到 csv,我想我可以这样做:

storage_settings = {'FEED_FORMAT': 'csv', 'FEED_URI': 'foo.csv'}
process = CrawlerProcess(get_project_settings())
process.crawl('ABC', crawl_links=main_links, custom_settings=storage_settings )
process.start() 
Run Code Online (Sandbox Code Playgroud)

在我的蜘蛛中,我将它们读作一个论点:

    def __init__(self, crawl_links=None, allowed_domains=None, customom_settings=None,  *args, **kwargs):
    self.start_urls = crawl_links
    self.allowed_domains = allowed_domains
    self.custom_settings = custom_settings
    self.rules = ......
    super(mySpider, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

但是我怎么能告诉我的项目设置文件“settings.py”这些自定义设置呢?我不想对它们进行硬编码,而是希望它们被自动读取。

python scrapy web-scraping scrapy-spider

6
推荐指数
1
解决办法
6570
查看次数

Scrapy process.crawl()将数据导出到json

这可能是在Scrapy python中将参数传递给process.crawl的一个子问题,但作者将答案(不能回答我问自己的子问题)标记为令人满意的答案.

这是我的问题:我不能使用scrapy crawl mySpider -a start_urls(myUrl) -o myData.json
相反我想要/需要使用crawlerProcess.crawl(spider)我已经想出几种方式来传递参数(无论如何它在我链接的问题中得到回答)但我无法理解我应该如何告诉它将数据转储到myData.json ... -o myData.json部分
任何人都有建议吗?或者我只是不理解它应该如何工作..?

这是代码:

crawlerProcess = CrawlerProcess(settings)
crawlerProcess.install()
crawlerProcess.configure()

spider = challenges(start_urls=["http://www.myUrl.html"])
crawlerProcess.crawl(spider)
#For now i am just trying to get that bit of code to work but obviously it will become a loop later.

dispatcher.connect(handleSpiderIdle, signals.spider_idle)

log.start()
print "Starting crawler."
crawlerProcess.start()
print "Crawler stopped."
Run Code Online (Sandbox Code Playgroud)

python json web-crawler scrapy

4
推荐指数
1
解决办法
924
查看次数

标签 统计

python ×2

scrapy ×2

json ×1

scrapy-spider ×1

web-crawler ×1

web-scraping ×1