Scrapy Python Настройка агента пользователя
Я попытался переопределить пользовательский агент моего 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" из файла конфигурации и запускаю scraw crawl myproject.com, он говорит "не может найти паука". Поэтому я чувствую, что в этом случае нельзя удалить значение по умолчанию.
Большое спасибо за помощь заранее.
Ответы
Ответ 1
Переместите строку USER_AGENT в файл settings.py
, а не в файл scrapy.cfg
. settings.py
должен быть на том же уровне, что и items.py
, если вы используете команду scrapy startproject
, в вашем случае это должно быть что-то вроде myproject/settings.py
Ответ 2
На всякий случай кто-то приземляется здесь, что вручную контролирует сканирование. т.е. вы не используете процесс обхода 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)'
}
)
Ответ 3
У меня была та же проблема. Попробуйте запустить ваш паук в качестве суперпользователя. Я запускал паук прямо с командой "scrapy runpider", когда я просто попробовал выполнить его с помощью "sudo scrapy runpider", в котором он работал.