python - example - scrapy follow
Scrapy Python configurar agente de usuario (3)
Mueva su línea USER_AGENT al archivo settings.py
, y no en su archivo scrapy.cfg
. settings.py
debería estar al mismo nivel que items.py
si usa el comando scrapy startproject
, en su caso debería ser algo como myproject/settings.py
Intenté anular el agente de usuario de mi crawlspider agregando una línea adicional al archivo de configuración del proyecto. Aquí está el código:
[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
Pero cuando ejecuto el rastreador en mi propia web, observo que la araña no detectó mi agente de usuario personalizado, sino el predeterminado "Scrapy / 0.18.2 (+ http://scrapy.org )". ¿Alguien puede explicar lo que he hecho mal?
Nota:
(1). Funciona cuando intenté anular el agente de usuario globalmente :
scrapy crawl myproject.com -o output.csv -t csv -s USER_AGENT="Mozilla...."
(2). Cuando elimino la línea "default = myproject.setting" del archivo de configuración y ejecuto scrapy crawl myproject.com, dice "no se puede encontrar spider ..", por lo que siento que la configuración predeterminada no se debe eliminar en este caso.
Muchas gracias por la ayuda por adelantado.
Por si acaso alguien aterriza aquí que controla manualmente el rastreo de chatarra. es decir, no utiliza el proceso de rastreo de scrapy desde el shell ...
$ scrapy crawl myproject
Pero insted que usas CrawlerProcess()
o CrawlerRunner()
...
process = CrawlerProcess()
o
process = CrawlerRunner()
luego, el agente de usuario, junto con otras configuraciones, se puede pasar al rastreador en un diccionario de variables de configuración.
Me gusta esto...
process = CrawlerProcess(
{
''USER_AGENT'': ''Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)''
}
)
Yo tuve el mismo problema. Intenta ejecutar tu araña como superusuario. Estaba ejecutando la araña directamente con el comando "scrapy runspider", cuando intenté ejecutarlo con "sudo scrapy runspider" funcionó.