Inkludera och ladda en proxylista i ett utrullat Scrapy-projekt
Inkludera en Scrapy-proxylisteresurs i distributionen och ladda den efter paketets plats i stället för den utrullade arbetskatalogen.
En proxyfil bredvid en utvecklingsklon finns inte automatiskt i crawlerens utrullade paket. Det finns två uppgifter: att inkludera byten i distributionen och sedan hitta dem i det installerade paketet.
För ett Setuptools-projekt med crawl_app/resources/proxies.txt i sitt Python-paket kan en pyproject.toml-post inkludera den:
[tool.setuptools.package-data]
crawl_app = ["resources/*.txt"]
Slå ihop detta med projektets befintliga paketkonfiguration. En annan byggbackend har sitt eget gränssnitt för datainkludering.
För middleware som kan konsumera endpoint-strängar kan Python 3.11+ läsa paketresursen direkt:
from importlib.resources import files
text = files('crawl_app').joinpath('resources', 'proxies.txt').read_text(
encoding='utf-8'
)
proxy_urls = [line.strip() for line in text.splitlines() if line.strip()]
Använd det faktiska paketnamnet och validera det förväntade URL-formatet i läsaren. För distribuerbara offentliga endpoint-data, använd adresser från gratis proxylista i det protokoll- och URL-format som middleware förväntar sig. Uppslagningen beror inte på utrullningens aktuella arbetskatalog.
En tredjepartsinställning PROXY_LIST kan kräva en filsökväg i stället för dessa strängar. När du använder importlib.resources.as_file för det gränssnittet, håll dess kontext öppen så länge middleware behöver den extraherade filen. Att returnera en tillfällig sökväg efter att kontexten stängts kan förlora resursen.
Förvara produktionslistor med autentiseringsuppgifter i den avsedda hemliga lagringen eller konfigurationslagringen för utrullningen. Paketdata lämpar sig för distribuerbara endpoint-data, inte för antagandet att allt som paketeras med kod förblir privat.