40

我试图通过在项目配置文件中添加一个额外的行来覆盖我的 crawlspider 的用户代理。这是代码:

[settings]
default = myproject.settings
USER_AGENT = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"


[deploy]
#url = http://localhost:6800/
project = myproject

但是当我在我自己的网络上运行爬虫时,我注意到蜘蛛没有选择我自定义的用户代理,而是默认的“Scrapy/0.18.2 (+ http://scrapy.org )”。谁能解释我做错了什么。

笔记:

(1)。当我尝试全局覆盖用户代理时,它可以工作:

scrapy crawl myproject.com -o output.csv -t csv -s USER_AGENT="Mozilla...."

(2)。当我从配置文件中删除“default = myproject.setting”行并运行scrapy crawl myproject.com时,它说“找不到spider..”,所以我觉得在这种情况下不应该删除默认设置。

非常感谢您提前提供的帮助。

4

2 回答 2

47

将您的 USER_AGENT 行移动到settings.py文件中,而不是在您的scrapy.cfg文件中。settings.py应该与items.py使用scrapy startproject命令处于同一级别,在您的情况下,它应该类似于myproject/settings.py

于 2013-09-20T17:45:41.863 回答
3

以防万一有人降落在这里手动控制爬虫。即你使用shell中的scrapy crawl进程......

$ scrapy crawl myproject

但是您使用CrawlerProcess()CrawlerRunner()...

process = CrawlerProcess()

或者

process = CrawlerRunner()

然后用户代理和其他设置可以在配置变量字典中传递给爬虫。

像这样...

    process = CrawlerProcess(
            {
                'USER_AGENT': 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
            }
    )
于 2017-07-31T15:43:52.770 回答