Scrapy Python设置用户代理

时间:2013-09-20 15:52:36

标签: python scrapy web-crawler screen-scraping user-agent

我尝试通过向项目configuration file添加额外的行来覆盖我的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)。当我试图覆盖user agent globally

时,它会起作用
scrapy crawl myproject.com -o output.csv -t csv -s USER_AGENT="Mozilla...."

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

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:37)

将您的USER_AGENT行移至settings.py文件,而不是scrapy.cfg文件。如果您使用settings.py命令,则items.py应与scrapy startproject处于同一级别,在您的情况下,myproject/settings.py

应为{{1}}

答案 1 :(得分:2)

以防万一有人在这里手动控制scrapy爬行。即你使用shell中的scrapy抓取过程......

$ 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)'
            }
    )

答案 2 :(得分:-8)

我遇到了同样的问题。尝试以超级用户身份运行蜘蛛。我正在使用命令“scrapy runspider”直接运行蜘蛛,当我尝试使用“sudo scrapy runspider”执行它时,它有效。

相关问题