it-swarm.dev

Scrapy Python Imposta l'agente utente

Ho provato a sovrascrivere lo user-agent del mio crawlspider aggiungendo una riga in più al progetto file di configurazione . Ecco il codice:

[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

Ma quando eseguo il crawler contro il mio web, noto che lo spider non ha rilevato il mio user agent personalizzato ma quello predefinito "Scrapy/0.18.2 (+ http://scrapy.org )". Qualcuno può spiegare cosa ho fatto di sbagliato. 

Nota:

(1). Funziona quando ho provato a sovrascrivere l'agente user a livello globale

scrapy crawl myproject.com -o output.csv -t csv -s USER_AGENT="Mozilla...."

(2). Quando rimuovo la riga "default = myproject.setting" dal file di configurazione ed eseguo la scansione scrapy di myproject.com, si dice "impossibile trovare lo spider ..", quindi mi sento come se l'impostazione predefinita non fosse rimossa in questo caso.

Grazie mille per l'aiuto in anticipo. 

24
B.Mr.W.

Sposta la tua riga USER_AGENT nel file settings.py e non nel tuo file scrapy.cfg. settings.py dovrebbe essere allo stesso livello di items.py se usi il comando scrapy startproject, nel tuo caso dovrebbe essere qualcosa come myproject/settings.py

36
paul trmbrth

Nel caso in cui qualcuno atterra qui che controlla manualmente la scansione raschiante. cioè fai non usa il processo di scansione scrapy dalla Shell ...

$ scrapy crawl myproject

Ma tu installi CrawlerProcess() o CrawlerRunner()...

process = CrawlerProcess()

process = CrawlerRunner()

quindi l'agente utente, insieme ad altre impostazioni, può essere passato al crawler in un dizionario di variabili di configurazione. 

Come questo...

    process = CrawlerProcess(
            {
                'USER_AGENT': 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
            }
    )
1
Bletch