Φόρτωση των ρυθμίσεων διαμεσολαβητή Scrapy σε σενάριο CrawlerProcess
Περάστε το get_project_settings() στο CrawlerProcess όταν ένας αυτόνομος εκκινητής πρέπει να χρησιμοποιεί το ίδιο middleware λήψης με το scrapy crawl.
Μια αράχνη μπορεί να χρησιμοποιεί τον αναμενόμενο διαμεσολαβητή υπό το scrapy crawl και να πηγαίνει απευθείας όταν εκκινείται από σενάριο Python. Ελέγξτε πώς αυτό το σενάριο χτίζει τις ρυθμίσεις του πριν αλλάξετε τον διακομιστή μεσολάβησης.
Για ένα υπάρχον έργο Scrapy και την καταχωρισμένη αράχνη του:
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()
Αντικαταστήστε το catalog με το όνομα της αράχνης του έργου. Το έργο πρέπει να είναι ανιχνεύσιμο μέσω του scrapy.cfg του ή μέσω ενός σωστά ορισμένου SCRAPY_SETTINGS_MODULE που δείχνει σε εισαγόμενη μονάδα ρυθμίσεων.
Η κατασκευή μόνο του CrawlerProcess() δεν εισάγει το αρχείο ρυθμίσεων του έργου επειδή απλώς το σενάριο εισάγει και μια κλάση αράχνης. Επομένως ένα προσαρμοσμένο middleware που ενεργοποιείται από το DOWNLOADER_MIDDLEWARES μπορεί να λείπει από αυτή την εκτέλεση.
Η φόρτωση των ρυθμίσεων παρέχει τα διαμορφωμένα στοιχεία· δεν επινοεί διεύθυνση διαμεσολαβητή. Το middleware διαμεσολαβητή HTTP του Scrapy εξακολουθεί να χρειάζεται τον κανονικό διαμεσολαβητή περιβάλλοντος ή μια ρητή τιμή request.meta['proxy']. Ελέγξτε ότι το HTTPPROXY_ENABLED δεν το απενεργοποίησε. Για επιτρεπόμενη ανίχνευση δημόσιων σελίδων, η λίστα διαμεσολαβητών HTTP προσφέρει υποψηφίους για τιμή διαμεσολαβητή HTTP που παρέχεται μέσω αυτών των μεταδεδομένων ή του περιβάλλοντος.
Συγκρίνετε τις φορτωμένες ρυθμίσεις και το ενεργό middleware του εκκινητή με την εκτέλεση από τη γραμμή εντολών. Αν ταιριάζουν, συνεχίστε με τα μεταδεδομένα διαμεσολαβητή του επιλεγμένου αιτήματος και το πραγματικό σφάλμα μεταφοράς.