د Python Requests او csv.reader سره د څو کرښو CSV ریکارډونه سټریم کړئ
د پروکسي له لارې راغلی ځواب csv.reader ته وسټریم کړئ او د هر فزیکي کرښې د جلا کوونکي پر بنسټ د ویشلو پر ځای د ریکارډونو پولې وساتئ.
stream=True اجازه ورکوي چې پروسس کول هغه مهال پیل شي چې د پروکسي له لارې د ځواب بدن لا بشپړ نه وي ډاونلوډ شوی. د CSV لپاره csv.reader ته د متن کرښو تکراروونکی ورکړئ، ترڅو د اقتباس نښو منځني جلا کوونکي او څو کرښې ریکارډونه د CSV معلوماتو په توګه پاتې شي.
د نیم-کرښې نښې کاروونکي بېلګې UTF-8 فایل لپاره:
import csv
import requests
routes = {'https': 'http://proxy.example:8080'}
with requests.get(
'https://data.example/observations.csv',
proxies=routes,
stream=True,
timeout=(5, 30),
) as response:
response.raise_for_status()
response.encoding = 'utf-8'
lines = (
line + '\n'
for line in response.iter_lines(
chunk_size=65536, decode_unicode=True)
)
for record in csv.reader(lines, delimiter=';'):
if record and record[0] == 'wanted':
print(record)
break
د فایل ریښتینی انکوډنګ او ژبګی غوره کړئ. د اجازه لرونکې عامه-پروکسي لارې پر عامه CSV ډاونلوډ لپاره، د HTTP پروکسي لیست د routes URL لپاره نوماندان وړاندې کوي. دا نسخه فزیکي کرښې پایونه LF ته نورمالوي: iter_lines هغه لرې کوي، او جنراتور د CSV شنونکي لپاره نوی کرښه بیا ورزیاتوي. دا مهم دي کله چې د اقتباس نښو دننه ساحه بلې فزیکي کرښې ته دوام ورکړي.
هغو کاري جریانونو لپاره چې د ننوتلو CRLF تورو بایټ-دقیق ساتل غواړي، هغه سټریمنګ متني پوښ چمتو کړئ چې دغه کرښې پایونه ساتي. په بېلګه کې قصدي نورمالول د ریکارډ-محور پروسس لپاره مناسبه ده چېرې چې LF هوښیاره استازیتوب دی.
یو ځواب، ډېر لوستل
تکراروونکی د یوې HTTP ځواب څخه ټوټې کاروي. هغه د هرې کرښې لپاره نوې غوښتنه نه استوي. HTTP Range غوښتنې بېل میکانیزم دي او په طبیعي ډول د CSV ریکارډونو پولې نه پېژني.
د response.text غږول یا ټولې کرښې په یو لیست کې راغونډول به ټول منځپانګه بیرته حافظې ته راوړي. سټریمنګ لا هم د لېږد بفرونو او اوسني ریکارډ لپاره ځای ته اړتیا لري، چې پخپله لویه ساحه لرلی شي.
د ځواب شالید هغه مهال بدن تړي چې لوپ ووځي، د وختي سمون په صورت کې هم. د لوستلو وخت-بندیز د راتلونکو معلوماتو لپاره انتظار محدودوي، نه د یوې لویې فایل لېږد ټول عمر.