it-swarm.com.de

Scrapy Python Benutzeragent einrichten

Ich habe versucht, den Benutzeragenten meines Crawlspiders zu überschreiben, indem ich dem Projekt Konfigurationsdatei eine zusätzliche Zeile hinzufügte. Hier ist der Code:

[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

Wenn ich den Crawler jedoch gegen mein eigenes Web starte, fiel mir auf, dass die Spinne nicht meinen benutzerdefinierten Benutzeragenten abholte, sondern den Standard "Scrapy/0.18.2 (+ http://scrapy.org )". Kann jemand erklären, was ich falsch gemacht habe. 

Hinweis:

(1). Es funktioniert, wenn ich versucht habe, den User Agent global zu überschreiben

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

(2). Wenn ich die Zeile "default = myproject.setting" aus der Konfigurationsdatei entferne und Scrapy crawl myproject.com ausführte, wird "Spider nicht gefunden" angezeigt. Ich denke, die Standardeinstellung sollte in diesem Fall nicht entfernt werden.

Vielen Dank für die Hilfe im Voraus. 

24
B.Mr.W.

Verschieben Sie Ihre USER_AGENT-Zeile in die settings.py-Datei und nicht in Ihre scrapy.cfg-Datei. settings.py sollte sich auf dem gleichen Niveau wie items.py befinden, wenn Sie den Befehl scrapy startproject verwenden. In Ihrem Fall sollte dies myproject/settings.py sein.

36
paul trmbrth

Nur für den Fall, dass hier jemand landet, der die Kriechgänge manuell steuert. Das heißt, Sie verwenden nicht den Scrapy-Crawling-Prozess von der Shell aus ...

$ scrapy crawl myproject

Aber dann verwenden Sie CrawlerProcess() oder CrawlerRunner()...

process = CrawlerProcess()

oder 

process = CrawlerRunner()

der Benutzeragent kann dann zusammen mit anderen Einstellungen in einem Wörterbuch mit Konfigurationsvariablen an den Crawler übergeben werden. 

So was...

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