我在settings.py中设置了默认的user-agent,但每次使用scrapy shell时,我仍然不得不添加-s选项和相应的值来设置user_agent。我知道我可以使用alias scrapys="scrapy shell -s USER_AGENT='xxxxx'"这样的命令来实现它,但是有没有更好的方法来实现它呢?
settings.py
scrapy shell
-s
alias scrapys="scrapy shell -s USER_AGENT='xxxxx'"
vzgqcmou1#
在settings.py中设置USER_AGENT应该可以满足您的需要。如果您对此有问题,请提供更多信息(如使用tree命令打印您的项目结构)。要使settings.py被scrapy shell ...命令读取,请确保1.您正在项目根目录中运行该命令,在该目录中可以看到一个scrapy.cfg文件。
USER_AGENT
tree
scrapy shell ...
scrapy.cfg
[settings] default = project_name.settings
project_name.settings是settings.py的模块路径。
project_name.settings
使用蜘蛛类属性Spider.custom_settings。
Spider.custom_settings
class MySpider(scrapy.Spider): name = 'myspider' custom_settings = { 'USER_AGENT': 'some value', }
此蜘蛛特定设置dict .custom_settings覆盖全局值settings.py。
.custom_settings
tcomlyy62#
除了Simba的解决方案1之外......我实际上在settings.py中添加了一个不同用户代理的列表。
# Crawl responsibly by identifying yourself (and your website) on the user-agent USER_AGENT = random.choice(USERAGENTS)
这样你就可以在每次打开scrapy shell的时候轮换用户代理了。只要确保列表在settings.py中的这行代码 * 之前 * 定义了就行了。也不要忘记在顶部附近写上import random。快乐的刮擦:)
import random
2条答案
按热度按时间vzgqcmou1#
溶液1
在
settings.py
中设置USER_AGENT
应该可以满足您的需要。如果您对此有问题,请提供更多信息(如使用tree
命令打印您的项目结构)。要使
settings.py
被scrapy shell ...
命令读取,请确保1.您正在项目根目录中运行该命令,在该目录中可以看到一个
scrapy.cfg
文件。settings.py
模块路径在scrapy.cfg
中定义。project_name.settings
是settings.py
的模块路径。溶液2
使用蜘蛛类属性
Spider.custom_settings
。此蜘蛛特定设置dict
.custom_settings
覆盖全局值settings.py
。参考
settings.py
doc from Scrapytcomlyy62#
除了Simba的解决方案1之外......我实际上在settings.py中添加了一个不同用户代理的列表。
这样你就可以在每次打开scrapy shell的时候轮换用户代理了。只要确保列表在settings.py中的这行代码 * 之前 * 定义了就行了。也不要忘记在顶部附近写上
import random
。快乐的刮擦:)