Scrapy-Proxy-Einstellungen in ein CrawlerProcess-Skript laden
Übergeben Sie get_project_settings() an CrawlerProcess, wenn ein eigenständiger Starter dieselbe Downloader-Middleware wie scrapy crawl verwenden soll.
Ein Spider kann unter scrapy crawl den erwarteten Proxy verwenden und geht direkt, wenn er von einem Python-Skript gestartet wird. Prüfen Sie, wie dieses Skript seine Einstellungen aufbaut, bevor Sie den Proxyserver ändern.
Für ein bestehendes Scrapy-Projekt und dessen registrierten Spider:
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
settings = get_project_settings()
process = CrawlerProcess(settings=settings)
process.crawl('catalog')
process.start()
Ersetzen Sie catalog durch den Spider-Namen des Projekts. Das Projekt muss über seine scrapy.cfg oder über ein korrekt gesetztes SCRAPY_SETTINGS_MODULE auffindbar sein, das auf ein importierbares Einstellungsmodul zeigt.
Alleiniges Erzeugen von CrawlerProcess() importiert die Einstellungsdatei des Projekts nicht, nur weil das Skript auch eine Spider-Klasse importiert. Eine benutzerdefinierte Middleware, die über DOWNLOADER_MIDDLEWARES aktiviert ist, kann deshalb in diesem Lauf fehlen.
Das Laden der Einstellungen liefert die konfigurierten Komponenten; es erfindet keine Proxyadresse. Scrapys HTTP-Proxy-Middleware benötigt weiterhin ihren üblichen Umgebungsproxy oder einen expliziten request.meta['proxy']-Wert. Prüfen Sie, dass HTTPPROXY_ENABLED sie nicht deaktiviert hat. Für einen erlaubten Crawl öffentlicher Seiten bietet die HTTP-Proxy-Liste Kandidaten für einen HTTP-Proxy-Wert, der über diese Metadaten oder die Umgebung übergeben wird.
Vergleichen Sie die geladenen Einstellungen und die aktive Middleware des Starters mit dem Aufruf über die Kommandozeile. Wenn sie übereinstimmen, fahren Sie mit den Proxy-Metadaten der ausgewählten Anfrage und dem tatsächlichen Transportfehler fort.