Scrapy Python 设置用户代理

Posted

技术标签:

【中文标题】Scrapy Python 设置用户代理【英文标题】:Scrapy Python Set up User Agent 【发布时间】:2013-09-26 02:05:51 【问题描述】:

我试图通过向项目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时,它说“找不到spider..”,所以我觉得在这种情况下不应该删除默认设置。

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

【问题讨论】:

【参考方案1】:

以防万一有人在这里手动控制爬虫爬网。也就是说,您确实使用 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)'
            
    )

【讨论】:

您是否还有一个如何轮换 user_agents 的示例?就像使用这个:pypi.org/project/scrapy-user-agents【参考方案2】:

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

【讨论】:

这里是 UA strings 来欺骗 Googlebot。去掠夺吧。 太棒了。也解决了我的问题。【参考方案3】:

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

【讨论】:

这没什么好处理的。

以上是关于Scrapy Python 设置用户代理的主要内容,如果未能解决你的问题,请参考以下文章

使用scrapy爬虫设置了ip代理报错是怎么回事

第三百四十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—通过downloadmiddleware随机更换user-agent浏览器用户代理

将 Scrapy 代理中间件设置为在每个请求上轮换

如何让 Scrapy 在日志中根据下载请求显示用户代理?

在scrapy中设置IP代理池(手动代理池)

网络爬虫之scrapy框架详解,scrapy框架设置代理