Izvlecite proxy končne točke vrstico tabele za vrstvico
Ohranite naslove IP povezane z njihovimi vrati in preverite polja pri razčlenjevanju shranjene HTML tabele s seznamom proxyjev.
Razčlenite vsako vrstico proxy kot eno enoto. Če sploščite vse ustrezne td po strani in rezultate združite po fiksnem številu, se lahko naslov iz ene vrstice poveže z vrati iz naslednje, ko manjka celica ali se pojavi druga tabela.
Za HTML, ki ga je aplikacija že pridobila, je mogoče tabelo, katere prva dva stolpca sta naslov IP in vrata, razčleniti takole:
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 in table_selector sta vhoda aplikacije. Izberite selektor in preslikavo stolpcev glede na dejansko označevanje vira. Brezplačni seznam proxyjev je en vir zapisov o končnih točkah, vendar je treba njegove vrstice pregledati, preden izberete to preslikavo. Niti zgodovinski ID tabele niti trditev, da stran vsebuje natanko 300 zapisov, nista trajna shema.
Množica odstrani podvojene pare naslov-in-vrata, hkrati pa ohrani povezavo vsakega para. Kljub temu je treba nepričakovan uvoz z ničelnim rezultatom raziskati: tabela se je morda spremenila ali pa je pridobljeni dokument stran izziva namesto seznama.
Ko so pomembna, ob končni točki ohranite navedeni protokol in polja časa preverjanja. Izvlečenje verjetnega IP in vrat potrjuje le obliko, ne pa, da končna točka trenutno zagotavlja delujočo storitev HTTP ali SOCKS.
Vrstice glave ali filtra niso končne točke. Vrstica, ki vsebuje samo celice th, se preskoči, prazna polja ali polja, ki niso naslovi, pa ne prestanejo preverjanja. Prve in zadnje vrstice ne zavrzite glede na položaj: po spremembi postavitve strani je lahko katera koli od njiju resnična končna točka.