Parsējiet katru starpniekservera rindu kā vienu vienību. Ja saplacināsit visas atbilstošās td visā lapā un sagrupēsiet rezultātus pēc fiksēta skaita, vienas rindas adrese var tikt sapārota ar nākamās rindas portu, kad trūkst šūnas vai parādās cita tabula.

HTML, ko lietojumprogramma jau ieguvusi, tabulu, kuras pirmās divas kolonnas ir IP adrese un ports, var parsēt šādi:

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 un table_selector ir lietojumprogrammas ievades. Izvēlieties selektoru un kolonnu kartējumu pēc avota faktiskā marķējuma. Bezmaksas starpniekserveru saraksts ir viens no galapunktu ierakstu avotiem, taču pirms šī kartējuma izvēles tā rindas ir jāapskata. Ne vēsturisks tabulas ID, ne apgalvojums, ka lapā ir tieši 300 ierakstu, nav ilgtspējīga shēma.

Kopa noņem dublētos adreses un porta pārus, vienlaikus saglabājot katra pāra saikni. Tomēr negaidīts imports ar nulles rezultātu joprojām ir jāizmeklē: tabula var būt mainījusies vai iegūtais dokuments var būt izaicinājuma lapa, nevis saraksts.

Ja tas ir svarīgi, saglabājiet norādīto protokolu un pārbaudes laika laukus blakus galapunktam. Ticamas IP un porta izgūšana apliecina tikai formātu, nevis to, ka galapunkts pašlaik nodrošina strādājošu HTTP vai SOCKS pakalpojumu.

Galvenes vai filtra rindas nav galapunkti. Rinda, kurā ir tikai th šūnas, tiek izlaista, savukārt tukši vai ne-adreses lauki neiztur validāciju. Neizmetiet pirmo un pēdējo rindu pēc pozīcijas: pēc lapas izkārtojuma maiņas jebkura no tām var būt īsts galapunkts.

Saistītie raksti