Dołączanie i wczytywanie listy serwerów proxy we wdrożonym projekcie Scrapy
Dołącz zasób listy serwerów proxy Scrapy do dystrybucji i wczytuj go według lokalizacji pakietu, a nie wdrożonego katalogu roboczego.
Plik proxy obok kopii deweloperskiej nie jest automatycznie obecny we wdrożonym pakiecie crawlera. Są dwa zadania: dołączyć bajty do dystrybucji, a następnie znaleźć je w zainstalowanym pakiecie.
W projekcie Setuptools z crawl_app/resources/proxies.txt w pakiecie Pythona wpis w pyproject.toml może go dołączyć:
[tool.setuptools.package-data]
crawl_app = ["resources/*.txt"]
Połącz to z istniejącą konfiguracją pakietu projektu. Inny backend kompilacji ma własny interfejs dołączania danych.
Dla middleware, który może przetwarzać łańcuchy endpointów, Python 3.11+ może bezpośrednio odczytać zasób pakietu:
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()]
Użyj rzeczywistej nazwy pakietu i zweryfikuj oczekiwany format URL w czytniku. W przypadku danych publicznych endpointów do dystrybucji używaj adresów z darmowej listy proxy w protokole i formacie URL oczekiwanych przez middleware. Wyszukiwanie nie zależy od bieżącego katalogu roboczego wdrożenia.
Ustawienie PROXY_LIST firmy trzeciej może wymagać ścieżki systemu plików zamiast tych łańcuchów. Gdy używasz importlib.resources.as_file dla tego interfejsu, utrzymuj jego kontekst otwarty tak długo, jak middleware potrzebuje wyodrębnionego pliku. Zwrócenie ścieżki tymczasowej po zamknięciu kontekstu może spowodować utratę zasobu.
Przechowuj listy produkcyjne zawierające dane uwierzytelniające w przeznaczonym dla wdrożenia magazynie sekretów lub konfiguracji. Dane pakietu nadają się do danych publicznych endpointów do dystrybucji, a nie do założenia, że wszystko spakowane z kodem pozostaje prywatne.