Пишем парсер на Python - грабим Proxy ч.1

  • Автор темы Gidroponika
  • Дата начала
G

Gidroponika

Конечно же все вы когда-нибудь пользовались прокси, и сегодня мы научимся делать парсер для добычи оных.

fe4ba8c7901e458144f71.png

Прокси-сервер — промежуточный сервер, позволяющий замаскировать собственное местоположение.

Парсер - это программа, которая автоматизирует сбор информации с заданных ресурсов.



Приступим:

Для начала мы накидаем такую конструкцию

Код:
import requests
from bs4 import BeautifulSoup


if __name__ == '__main__':
    main()

Модуль requests нужен для обращения к серверу, BeautifulSoup анализирует html код, и последняя запись это точка входа в главную функцию main() которую мы напишем в самом конце программы.



Далее создадим функцию get_html которая принимает аргумент site. Переменная r обращается к requests методом get и получает чтение site. Функция возвращает r выведенную в текст.


Код:
def get_html(site):
    r = requests.get(site)
    return r.text
Далее создаём вторую функцию get_page_data для получения данных со страницы html. Эти сырые данные попадают в переменную soup. Обрабатывает данные BeautifulSoup, принимая код html. И в качестве парсера указываем 'lxml.

Код:
def get_page_data(html):
    soup = BeautifulSoup(html, 'lxml')

Добывать прокси мы будем с

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

поэтому заходим по этому адресу, открываем инструменты разработчика кнопкой F12. Удобнее всего, на мой взгляд реализовано в ГуглХром. Кому-то нравится в лисе, но это не так важно. Наша задача определить в исходном коде, где находятся нужные нам строки.



В исходнике мы видим что proxy заключены в таблицу, и у этой таблицы есть id 'theProxyList'

deb99168561ff125b6ae6.png

Внутри таблицы находится тег tbody

85c5cec3038605b61be4a.png

А внутри тега tbody есть теги tr при наведении на которые выделяется строка (линия) с нужными данными.

c09a401edcb58f1e6d60e.png

Значит чтобы спарсить эту линию добавим в нашу функцию такую строку



Код:
line = soup.find('table', id='theProxyList').find('tbody').find_all('tr')
# Ищем с помощью find 'tbody' и с помощью find_all все 'tr'

Прекрасно, начало есть. Но это ещё не всё друзья, не так быстро дела делаются.

В функцию get_page_data теперь добавим цикл, в котором мы будем обращаться по индексу к нужным данным. Дата и время проверки не будем парсить, так как это не такая нужная информация. Остальное преобразуем в текст с помощью text

Код:
for tr in line:
        td = tr.find_all('td')
        ip = td[1].text
        port = td[2].text
        country = td[3].text
        anonym = td[4].text
        types = td[5].text
        time = td[6].text

Теперь полученные данные запишем в словарь

Код:
      data = {'ip': ip,
                'Порт': port,
                'Страна': country,
                'Анонимность': anonym,
                'Тип': types,
                'Время отклика': time}

И выведем на печать print(data).



Осталось написать главную функцию, в ней мы принимаем url сайта, и по цепочке идёт обработка предыдущими функциями.

Код:
def main():
    url = 'http://foxtools.ru/Proxy'
    get_page_data(get_html(url))

Наконец-то запускаем скрипт и видим следующую картину:

000809ba13ac2a6ec6b80.png

Данные успешно спарсились, но картинка не такая как хотелось бы. Присутствует куча мусора в виде \xa0, \r\n, \r\n\t\t\t\t\t

Значит будем от него избавляться. С помощью replace удалим всё лишнее, и для этого поправим наш цикл



Код:
    for tr in line:
        td = tr.find_all('td')
        ip = td[1].text
        port = td[2].text
        country = td[3].text.replace('\xa0', '')
        anonym = td[4].text.replace('\r\n        ', '')
        types = td[5].text.replace('\r\n\t\t\t\t\t', '').replace('\r\n        ', '')
        time = td[6].text

Запускаем по новой - другое дело, уже всё читабельно.

5d0a68f862fd334779a88.png

Исходник:

Код:
import requests
from bs4 import BeautifulSoup


def get_html(site):
    r = requests.get(site)
    return r.text


def get_page_data(html):
    soup = BeautifulSoup(html, 'lxml')
    line = soup.find('table', id='theProxyList').find('tbody').find_all('tr')

    for tr in line:
        td = tr.find_all('td')
        ip = td[1].text
        port = td[2].text
        country = td[3].text.replace('\xa0', '')
        anonym = td[4].text.replace('\r\n        ', '')
        types = td[5].text.replace('\r\n\t\t\t\t\t', '').replace('\r\n        ', '')
        time = td[6].text

        data = {'ip': ip,
                'Порт': port,
                'Страна': country,
                'Анонимность': anonym,
                'Тип': types,
                'Время отклика': time}

        print(data)


def main():
    url = 'http://foxtools.ru/Proxy'
    get_page_data(get_html(url))


if __name__ == '__main__':
    main()

Ну вот мы и научились некоторым приёмам парсинга страниц. В следующей статье мы продолжим работать с этим парсером и добавим функционал.

До встречи! ;)
 
  • Like
Реакции: blev
Название темы
Автор Заголовок Раздел Ответы Дата
G Пишем парсер на Python - грабим Proxy ч.2 Бруты/Парсеры/Чекеры 0
Ёшкин_кот Интересно Пишем любой текст на листочке который держит обнажённая девушка. 18+ Свободное общение и флейм 0
Ёшкин_кот Интересно Пишем вредоносное ПО с помощью ChatGPT. Формат mp4. English-speaking. Полезные статьи 0
A Пишем свой RAT на Python > {Часть 1} Уязвимости и взлом 3
U Интересно PHP - Пишем свой фишинг скрипт для кражи тт аккаунтов {Уровень: EASY} Другие ЯП 10
L Интересно C# - Пишем Watchdog (Модуль защиты вашего трояна) .NET 2
K Интересно [Roman Akhromieiev] Telegram. Пишем ботов на Node JS и Telegraf (2020) Другое 1
sxkury Пишем малютку для скана сайта Софт от наших юзеров 6
АнАлЬнАя ЧуПаКаБрА Интересно Пишем брут на любой(почти) банк [OFX] Другие ЯП 1
S Пишем свой перехватчик СМС Android Другие ЯП 3
T Пишем WinLocker на Delphi С/C++ 0
N Пишем отзывы и получаем от 200 рублей в день. Способы заработка 12
G Пишем скрипт для работы с VirusTotal-ом Полезные статьи 0
G Пишем шифровальщик на python Полезные статьи 0
Traven Пишем спамер Telegram, на Python Другое 0
Traven Пишем свой стиллер на Python Другие ЯП 4
Traven WinLocker на python. Пишем вирус. Другое 0
V Пишем переносной кейлоггер на C++ Полезные статьи 1
O Пишем стиллер на Batch Вирусология 15
A Delphi для начинающих – Урок 6 – Пишем свой калькулятор С/C++ 0
E [PHP] Пишем свой движок 2.0 Другие ЯП 0
Glods Пишем многопоточный Brute С/C++ 0
R Пишем билдер C# вариант 1 .NET 2
Mr Crabs Продам Telegram парсер участников чата по сообщениям Куплю/Продам 0
Parser_Pro Бесплатный парсер бот в Телеграм [ Parser Pro ] Бруты/Парсеры/Чекеры 5
C Проверено Datacol 7.341 [x32] [Универсальный парсер] [Cracked by Coder-V] Продажа софта 2
Mr Crabs Закрыто Telegram Граббер, парсер и автопостер в канал Корзина 1
A A-Parser - универсальный многопоточный парсер Продажа софта 1
АнАлЬнАя ЧуПаКаБрА INLINE Переписанный приватный парсер номеров [1 из 13] Проекты Private Keeper 1
E VkSearch — бесплатный парсер пользователей ВК Бруты/Парсеры/Чекеры 1
W SQL Hunter1.2 (парсер для Google и поиск уязвимостей sql) Spam/DDOS/Malware 12
M Создать софт парсер Свободное общение и флейм 1
АнАлЬнАя ЧуПаКаБрА VkSearch — бесплатный парсер пользователей ВК Бруты/Парсеры/Чекеры 3
Support81 «Крыша» за криптовалюту: экс-полицейский МВД России в розыске за взятки на 4,9 млрд рублей Новости в сети 0
turbion0 Мошенник под видом начальника обманул петрозаводчанку почти на миллион рублей Новости в сети 0
Support81 Экс-сотрудник ФСБ на службе у хакеров: 9 лет тюрьмы за крышевание преступников Новости в сети 0
Y Ожидает оплаты YTparser - Парсер ютуба в телеграмме | Почты | ВКонтакте | Ссылки на каналы | И многое другое Продажа софта 0
Emilio_Gaviriya Статья Внедрение DNS-over-HTTPS на уровне операционной системы в KDE neon и Ubuntu. Анонимность и приватность 0
Support81 LockBit или DragonForce? Кибератака на Палау привела IT-специалистов в замешательство Новости в сети 0
hackway Куплю Автоматическая Скупка Аккаунтов ВКонтакте | Самые выгодные предложения на рынке! Куплю/Продам 0
El_IRBIS Интересно Проверка маршрутизатора на наличие вредоносных программ: полное руководство Вирусология 0
Support81 Криптовалютная империя на крови: KuCoin обвиняется в отмывании $9 млрд. Новости в сети 1
Tera_shop Продам Telegram аккаунты для рассылки, инвайта (Session + Json, Tdata) Tear-shop.ru Купить аккаунты на сайте: https://tear-shop.ru/ Tear-shop - Магазин Аккаунты/Админки/Документы 1
obscure Интересно YouTube канал на кардер\хаккинг\скам\кодер тематику Видео/Музыка 0
Support81 Был героем – стал злодеем: почему уставшие ИБ-специалисты встают на путь криминала Новости в сети 0
F Ручное размещение тем на разных форумах и продажа базы. Ищу работу. Предлагаю свои услуги. 2
Support81 Loop DoS: бесконечные циклы на службе киберпреступников Новости в сети 0
M Работа на выгодных условиях без особого труда. Предоставляю работу. Ищу специалиста. 0
Support81 ФБР: технологии могут повлиять на американские выборы в 2024 году Новости в сети 1
Emilio_Gaviriya Статья Поиск уязвимостей на хосте. Уязвимости и взлом 1

Название темы