Bao gồm và tải danh sách proxy trong một dự án Scrapy đã triển khai
Đưa tài nguyên danh sách proxy của Scrapy vào bản phân phối và tải nó theo vị trí gói thay vì thư mục làm việc đã triển khai.
Tệp proxy bên cạnh bản sao phát triển không tự động có trong gói đã triển khai của crawler. Có hai việc: đưa các byte vào bản phân phối, sau đó tìm chúng trong gói đã cài đặt.
Với một dự án Setuptools có crawl_app/resources/proxies.txt bên trong gói Python của nó, một mục pyproject.toml có thể đưa nó vào:
[tool.setuptools.package-data]
crawl_app = ["resources/*.txt"]
Kết hợp điều đó với cấu hình gói hiện có của dự án. Một backend build khác có giao diện đưa dữ liệu vào riêng.
Với middleware có thể sử dụng chuỗi endpoint, Python 3.11+ có thể đọc trực tiếp tài nguyên của gói:
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()]
Dùng tên gói thực tế và xác thực định dạng URL mong đợi trong trình đọc. Với dữ liệu endpoint công khai có thể phân phối, hãy dùng địa chỉ từ danh sách proxy miễn phí theo giao thức và định dạng URL mà middleware mong đợi. Việc tra cứu không phụ thuộc vào thư mục làm việc hiện tại của lần triển khai.
Một cài đặt PROXY_LIST của bên thứ ba có thể yêu cầu đường dẫn hệ thống tệp thay vì các chuỗi này. Khi dùng importlib.resources.as_file cho giao diện đó, hãy giữ ngữ cảnh của nó mở chừng nào middleware còn cần tệp đã trích xuất. Trả về một đường dẫn tạm sau khi đóng ngữ cảnh có thể làm mất tài nguyên.
Giữ danh sách sản xuất có thông tin xác thực trong kho bí mật hoặc cấu hình dành cho việc triển khai. Dữ liệu gói phù hợp với dữ liệu endpoint có thể phân phối, không phải giả định rằng mọi thứ đóng gói cùng mã đều luôn riêng tư.