Tarpinio serverio sąrašo įtraukimas ir įkėlimas įdiegtame Scrapy projekte
Įtraukite Scrapy tarpinio serverio sąrašo išteklių į platinamąjį paketą ir įkelkite jį pagal paketo vietą, o ne įdiegtą darbo katalogą.
Tarpinio serverio failas šalia kūrimo klono nėra automatiškai įdiegtame crawler pakete. Yra du darbai: įtraukti baitus į platinamąjį paketą ir tada rasti juos įdiegtame pakete.
Setuptools projektui, kurio Python pakete yra crawl_app/resources/proxies.txt, pyproject.toml įrašas gali jį įtraukti:
[tool.setuptools.package-data]
crawl_app = ["resources/*.txt"]
Sujunkite tai su esama projekto paketo konfigūracija. Kitas build backend turi savo duomenų įtraukimo sąsają.
Middleware, galinčiam naudoti endpoint eilutes, Python 3.11+ gali tiesiogiai nuskaityti paketo išteklių:
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()]
Naudokite tikrąjį paketo pavadinimą ir skaitytuve patikrinkite laukiamą URL formatą. Platinamiems viešiems endpoint duomenims naudokite adresus iš nemokamo tarpinio serverio sąrašo middleware laukiamu protokolu ir URL formatu. Paieška nepriklauso nuo dabartinio diegimo darbo katalogo.
Trečiosios šalies PROXY_LIST nustatymas gali reikalauti failų sistemos kelio, o ne šių eilučių. Kai tam naudojate importlib.resources.as_file, laikykite jo kontekstą atvirą tol, kol middleware reikia išgauto failo. Grąžinus laikiną kelią uždarius kontekstą, išteklius gali būti prarastas.
Produkcijos sąrašus su kredencialais laikykite diegimui skirtame slaptų duomenų arba konfigūracijos saugykloje. Paketo duomenys tinka platinamiems endpoint duomenims, o ne prielaidai, kad viskas, supakuota su kodu, lieka privatu.