პროქსის ბოლო წერტილების ამოღება ცხრილის ერთი რიგით
შეინახეთ 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 უჯრების შემცველი რიგი გამოტოვებულია, ცარიელი ან არა-მისამართი ველები კი ვერ გადის შემოწმებას. არ გადააგდოთ პირველი და ბოლო რიგი პოზიციის მიხედვით: გვერდის განლაგების შეცვლის შემდეგ ორივე შეიძლება რეალური ბოლო წერტილი იყოს.