Proksi son nöqtələrini hər dəfə cədvəlin bir sətri ilə çıxarın
IP ünvanlarını portları ilə birlikdə saxlayın və saxlanmış proksi siyahısı HTML cədvəlini təhlil edərkən sahələri yoxlayın.
Hər proksi sətrini ayrıca vahid kimi təhlil edin. Səhifədəki bütün uyğun td-ləri düzəldib nəticələri sabit sayda qruplaşdırmaq, hüceyrə çatışmadıqda və ya başqa cədvəl göründükdə bir sətirdən gələn ünvanı növbəti sətrin portu ilə cütləşdirə bilər.
Tətbiqin artıq əldə etdiyi HTML üçün ilk iki sütunu IP ünvanı və port olan cədvəl belə təhlil edilə bilər:
import ipaddress
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
table = soup.select_one(table_selector)
if table is None:
raise ValueError("Expected proxy table was not found")
endpoints = set()
for row in table.select("tbody tr"):
cells = row.find_all("td", recursive=False)
if len(cells) < 2:
continue
try:
address = ipaddress.ip_address(cells[0].get_text(strip=True))
port = int(cells[1].get_text(strip=True))
except ValueError:
continue
if 1 <= port <= 65535:
endpoints.add((str(address), port))html və table_selector tətbiqin girişləridir. Selektor və sütun xəritələnməsini mənbənin faktiki işarələməsindən seçin. Pulsuz proksi siyahısı son nöqtə qeydlərinin mənbələrindən biridir, lakin bu xəritələnməni seçməzdən əvvəl onun sətirləri yoxlanmalıdır. Nə tarixi cədvəl ID-si, nə də səhifədə dəqiq 300 qeydin olması iddiası davamlı sxem deyil.
Çoxluq təkrar ünvan-port cütlərini çıxarır, eyni zamanda hər cütün əlaqəsini qoruyur. Gözlənilməz sıfır nəticəli idxal yenə də araşdırılmalıdır: cədvəl dəyişmiş ola bilər və ya yüklənmiş sənəd siyahı deyil, çağırış səhifəsi ola bilər.
Elan edilmiş protokol və yoxlama vaxtı sahələri varsa, onları son nöqtə ilə birlikdə saxlayın. İnandırıcı IP və port çıxarmaq yalnız formatı təsdiqləyir, son nöqtənin hazırda işlək HTTP və ya SOCKS xidməti verdiyini deyil.
Başlıq və ya filtr sətirləri son nöqtə deyil. Yalnız th hüceyrələri olan sətir atlanır, boş və ya ünvan olmayan sahələr isə yoxlamadan keçmir. Birinci və sonuncu sətri mövqeyə görə silməyin: səhifə düzümü dəyişdikdən sonra hər ikisi əsl son nöqtə ola bilər.