Voras gali naudoti tikėtiną proxy pagal scrapy crawl ir eiti tiesiai, kai jį paleidžia Python scenarijus. Prieš keisdami proxy serverį patikrinkite, kaip tas scenarijus sudaro savo nustatymus.

Esamam Scrapy projektui ir jo registruotam vorui:

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()

Pakeiskite catalog projekto voro vardu. Projektas turi būti randamas per savo scrapy.cfg arba per teisingai nustatytą SCRAPY_SETTINGS_MODULE, nurodantį importuojamą nustatymų modulį.

Vien CrawlerProcess() sukūrimas neimportuoja projekto nustatymų failo vien todėl, kad scenarijus taip pat importuoja voro klasę. Todėl pasirinktinis tarpinis sluoksnis, įjungtas per DOWNLOADER_MIDDLEWARES, tame paleidime gali nebūti.

Nustatymų įkėlimas suteikia sukonfigūruotus komponentus; jis neišgalvoja proxy adreso. Scrapy HTTP proxy tarpinis sluoksnis vis tiek reikalauja įprasto aplinkos proxy arba aiškios request.meta['proxy'] reikšmės. Patikrinkite, ar HTTPPROXY_ENABLED jo neišjungė. Leidžiamam viešų puslapių nuskaitymui HTTP proxy sąrašas siūlo kandidatus HTTP proxy reikšmei, pateikiamai per tuos metaduomenis arba aplinką.

Palyginkite paleidiklio įkeltus nustatymus ir aktyvų tarpinį sluoksnį su paleidimu iš komandinės eilutės. Jei jie sutampa, tęskite su pasirinktos užklausos proxy metaduomenimis ir tikrąja perdavimo klaida.

Susiję straipsniai