Analizo çdo rresht proxy si një njësi. Nëse sheshon të gjitha td që përputhen në të gjithë faqen dhe i grupon rezultatet sipas një numri fiks, një adresë nga një rresht mund të çiftëzohet me një portë nga rreshti tjetër kur mungon një qelizë ose shfaqet një tabelë tjetër.

Për HTML-në që aplikacioni e ka marrë tashmë, një tabelë dy kolonat e para të së cilës janë adresa IP dhe porta mund të analizohet kështu:

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 dhe table_selector janë hyrje të aplikacionit. Zgjidh përzgjedhësin dhe hartëzimin e kolonave nga shënimi real i burimit. Lista e proxy-ve falas është një burim regjistrimesh pikash fundore, por rreshtat e saj duhet të inspektohen përpara se të zgjidhet ai hartëzim. As ID-ja historike e tabelës dhe as pohimi se një faqe përmban saktësisht 300 regjistrime nuk janë skemë e qëndrueshme.

Grupi heq çiftet e dyfishta adresë-dhe-portë duke ruajtur lidhjen e secilit çift. Megjithatë, një import i papritur me zero rezultate duhet hetuar: tabela mund të ketë ndryshuar ose dokumenti i marrë mund të jetë një faqe sfide në vend të listës.

Ruaj çdo protokoll të shpallur dhe fushat e kohës së kontrollit pranë pikës fundore kur kanë rëndësi. Nxjerrja e një IP-je dhe porte të besueshme vërteton formatin, jo që pika fundore aktualisht ofron një shërbim HTTP ose SOCKS funksional.

Rreshtat e kokës ose të filtrit nuk janë pika fundore. Një rresht që përmban vetëm qeliza th kapërcehet, ndërsa fushat bosh ose që nuk janë adresa dështojnë validimin. Mos i hidh rreshtin e parë dhe të fundit sipas pozicionit: secili prej tyre mund të jetë pikë fundore e vërtetë pasi ndryshon plani i faqes.

Artikuj të ngjashëm