Parsujte každý řádek proxy jako jeden celek. Pokud zploštíte všechny odpovídající td na stránce a výsledky seskupíte podle pevného počtu, může se adresa z jednoho řádku spárovat s portem z následujícího, když chybí buňka nebo se objeví jiná tabulka.

Pro HTML, které aplikace už získala, lze tabulku, jejíž první dva sloupce jsou IP adresa a port, parsovat takto:

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 a table_selector jsou vstupy aplikace. Selektor a mapování sloupců vyberte podle skutečného značkování zdroje. Seznam bezplatných proxy je jedním zdrojem záznamů o koncových bodech, ale jeho řádky je třeba prohlédnout, než toto mapování zvolíte. Ani historické ID tabulky, ani tvrzení, že stránka obsahuje přesně 300 záznamů, není trvalé schéma.

Množina odstraňuje duplicitní dvojice adresa-port a zachovává přitom spojení každé dvojice. Neočekávaný import s nulovým výsledkem je stále třeba prošetřit: tabulka se mohla změnit nebo stažený dokument může být ověřovací stránka místo seznamu.

Pokud jsou důležité, uchovejte u koncového bodu i uvedený protokol a pole doby kontroly. Vytěžení věrohodné IP a portu prokazuje jen formát, ne to, že koncový bod právě teď poskytuje funkční službu HTTP nebo SOCKS.

Řádky záhlaví nebo filtru nejsou koncové body. Řádek obsahující jen buňky th se přeskakuje, zatímco prázdná nebo neadresní pole neprojdou validací. Nezahazujte první a poslední řádek podle pozice: po změně rozvržení stránky může být skutečným koncovým bodem kterýkoli z nich.

Související články