Уключэнне і загрузка спіса проксі ў разгорнутым праекце Scrapy
Уключыце рэсурс спіса проксі Scrapy у дыстрыбутыў і загружайце яго па месцы пакета, а не па разгорнутым працоўным каталогу.
Файл проксі побач з распрацоўчым клонам не заўсёды прысутнічае ў разгорнутым пакеце краўлера. Ёсць дзве задачы: уключыць байты ў дыстрыбутыў, затым знайсці іх ва ўсталяваным пакеце.
Для праекта Setuptools з crawl_app/resources/proxies.txt унутры яго Python-пакета запіс у pyproject.toml можа ўключыць яго:
[tool.setuptools.package-data]
crawl_app = ["resources/*.txt"]
Аб'яднайце гэта з існуючай канфігурацыяй пакета праекта. Іншы бэкенд зборкі мае ўласны інтэрфейс уключэння даных.
Для middleware, які можа спажываць радкі endpoint, Python 3.11+ можа чытаць рэсурс пакета напрамую:
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()]
Выкарыстоўвайце фактычную назву пакета і правярайце чаканы фармат URL у чытачу. Для размеркавальных публічных даных endpoint выкарыстоўвайце адрасы з бясплатнага спіса проксі у чаканых middleware пратаколе і фармаце URL. Пошук не залежыць ад бягучага працоўнага каталога разгортвання.
Налада PROXY_LIST ад трэцяга боку можа патрабаваць шлях файлавай сістэмы замест гэтых радкоў. Пры выкарыстанні importlib.resources.as_file для гэтага інтэрфейсу трымайце яго кантэкст адкрытым, пакуль middleware патрэбны выняты файл. Вяртанне часовага шляху пасля закрыцця кантэксту можа страціць рэсурс.
Трымайце вытворчыя спісы з уліковымі данымі ў прызначаным для разгортвання сховішчы сакрэтаў або канфігурацыі. Даныя пакета падыходзяць для размеркавальных даных endpoint, а не для здагадкі, што ўсё, што пастаўляецца з кодам, застаецца прыватным.