Izdvojite proxy završne tačke red po red tabele
Držite IP adrese povezane sa njihovim portovima i proverite polja pri parsiranju sačuvane HTML tabele liste proxyja.
Parsirajte svaki proxy red kao jednu celinu. Ako spljoštite sve odgovarajuće td na stranici i grupišete rezultate po fiksnom broju, adresa iz jednog reda može se upariti sa portom iz sledećeg kada nedostaje ćelija ili se pojavi druga tabela.
Za HTML koji je aplikacija već dobila, tabela čije su prve dve kolone IP adresa i port može se parsirati ovako:
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 i table_selector su ulazi aplikacije. Izaberite selektor i mapiranje kolona prema stvarnom označavanju izvora. Besplatna lista proxyja jedan je izvor zapisa o završnim tačkama, ali njene redove treba pregledati pre izbora tog mapiranja. Ni istorijski ID tabele ni tvrdnja da stranica sadrži tačno 300 zapisa nisu trajna šema.
Skup uklanja duplikate parova adresa-port uz zadržavanje veze svakog para. Neočekivani uvoz sa nula rezultata ipak treba istražiti: tabela se možda promenila ili preuzeti dokument može biti stranica provere umesto liste.
Zadržite najavljeni protokol i polja vremena provere uz završnu tačku kada su važna. Izdvajanje verodostojne IP adrese i porta dokazuje samo format, ne da završna tačka trenutno pruža ispravnu HTTP ili SOCKS uslugu.
Redovi zaglavlja ili filtera nisu završne tačke. Red sa samo th ćelijama se preskače, a prazna ili neadresna polja ne prolaze validaciju. Ne odbacujte prvi i poslednji red prema položaju: bilo koji može biti stvarna završna tačka nakon promene izgleda stranice.