అమలు చేసిన Scrapy ప్రాజెక్ట్లో ప్రాక్సీ జాబితాను చేర్చి లోడ్ చేయడం
Scrapy ప్రాక్సీ జాబితా వనరును పంపిణీలో చేర్చి, అమలు చేసిన పని డైరెక్టరీకి బదులుగా ప్యాకేజీ స్థానం ద్వారా లోడ్ చేయండి.
అభివృద్ధి క్లోన్ పక్కన ఉన్న ప్రాక్సీ ఫైల్ క్రాలర్ యొక్క అమలు చేసిన ప్యాకేజీలో స్వయంచాలకంగా ఉండదు. రెండు పనులు ఉన్నాయి: బైట్లను పంపిణీలో చేర్చడం, ఆపై ఇన్స్టాల్ చేసిన ప్యాకేజీలో వాటిని కనుగొనడం.
తన Python ప్యాకేజీ లోపల crawl_app/resources/proxies.txt కలిగిన Setuptools ప్రాజెక్ట్ కోసం, pyproject.toml ఎంట్రీ దానిని చేర్చగలదు:
[tool.setuptools.package-data]
crawl_app = ["resources/*.txt"]
దానిని ప్రాజెక్ట్ యొక్క ప్రస్తుత ప్యాకేజీ కాన్ఫిగరేషన్తో విలీనం చేయండి. వేరే బిల్డ్ బ్యాకెండ్కు దాని స్వంత డేటా-చేరిక ఇంటర్ఫేస్ ఉంటుంది.
endpoint స్ట్రింగ్లను వినియోగించగల middleware కోసం, 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 డేటాకు సరిపోతుంది, కోడ్తో బండిల్ చేసిన ప్రతిదీ ప్రైవేట్గా ఉంటుందనే ఊహ కాదు.