Прокси соңғы нүктелерін кестенің бір жолымен шығару
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 ұяшықтары бар жол өткізіліп кетеді, ал бос немесе мекенжай емес өрістер тексеруден өтпейді. Бірінші және соңғы жолды орны бойынша тастамаңыз: бет макеті өзгергеннен кейін екеуі де нақты соңғы нүкте болуы мүмкін.