Издвојте прокси завршне тачке ред по ред табеле
Држите IP адресе повезане са њиховим портовима и проверите поља при парсирању сачуване HTML табеле листе проксија.
Парсирајте сваки прокси ред као једну целину. Ако спљоштите све одговарајуће td на страници и групишете резултате по фиксном броју, адреса из једног реда може се упарити са портом из следећег када недостаје ћелија или се појави друга табела.
За HTML који је апликација већ добила, табела чије су прве две колоне IP адреса и порт може се парсирати овако:
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 и table_selector су улази апликације. Изаберите селектор и мапирање колона према стварном означавању извора. Бесплатна листа проксија један је извор записа о завршним тачкама, али њене редове треба прегледати пре избора тог мапирања. Ни историјски ID табеле ни тврдња да страница садржи тачно 300 записа нису трајна шема.
Скуп уклања дупликате парова адреса-порт уз задржавање везе сваког пара. Неочекивани увоз са нула резултата ипак треба истражити: табела се можда променила или преузети документ може бити страница провере уместо листе.
Задржите најављени протокол и поља времена провере уз завршну тачку када су важна. Издвајање веродостојне IP адресе и порта доказује само формат, не да завршна тачка тренутно пружа исправну HTTP или SOCKS услугу.
Редови заглавља или филтера нису завршне тачке. Ред са само th ћелијама се прескаче, а празна или неадресна поља не пролазе валидацију. Не одбацујте први и последњи ред према положају: било који може бити стварна завршна тачка након промене изгледа странице.