gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:56:17 26 4
gpt4 key购买 nike

我有两个 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()

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

    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)

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

最佳答案

您不能将这些设置告诉您的文件。您可能对爬虫设置和蜘蛛设置感到困惑。在 scrapy 中,截至本文撰写时的提要参数需要传递给爬虫进程而不是蜘蛛。您必须将它们作为参数传递给您的爬虫进程。我有和你一样的用例。您所做的是读取当前项目设置,然后为每个爬虫进程覆盖它。请参阅下面的示例代码:

s = get_project_settings()
s['FEED_FORMAT'] = 'csv'
s['LOG_LEVEL'] = 'INFO'
s['FEED_URI'] = 'Q1.csv'
s['LOG_FILE'] = 'Q1.log'

proc = CrawlerProcess(s)

然后您对 process.crawl() 的调用不正确。蜘蛛的名称应该作为字符串的第一个参数传递,如下所示:process.crawl('MySpider', crawl_links=main_links) 当然 MySpider 应该是蜘蛛类中 name 属性的值。

关于python - 如何在 scrapy 中通过 CrawlerProcess 传递自定义设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42300562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com