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

Forevonly

Pro Member
Сообщения
599
Реакции
601
Посетить сайт
Продолжим начатое.

В прошлой

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

мы спарсили список прокси, и получили очищенный от мусора вывод в виде словаря. Чтобы совсем всё получилось идеально (убрать кавычки и фигурные скобки), нужно словарь перевести в строку.


Для этого напишем цикл, и разместим его сразу под словарём data. Чтобы цикл был рабочим, нужно переменную b сделать глобальной.

Код:
global  b
        d = " "
        for i in data:           
            b = data[i]
            c = i+": "+data[i]
            d = d+c+', '

Можно также убрать пробел в начале записи с помощью lstrip(), и вывод на печать будет такой print(d.lstrip())



Запускаем программу, и получаем чистый список данных в виде строк


Но конечно лучше же иметь запись результатов в текстовом файле. Поэтому мы поменяем вывод на запись в файл и получим на выходе proxy.txt

Код:
with open('proxy.txt', 'a') as f:
            print(d, file=f)

Текстовый файл это уже замечательно, но мы сделаем наши данные ещё более читаемыми. Для этого откроем proxy.txt с помощью EXEL. Выделим щелчком мышки столбец А, зайдём во вкладку "Данные" --> "Текст по столбцам"


Жмём далее, выставляем разделитель "запятая"


Ещё раз далее и ОК. Расставим ширину колонок как нам нравится и получим удобный и красивый результат. Но как говорится не все прокси одинаково хороши. Нам нужно отобрать наилучшие. Поэтому отсортируем наш лист по колонке D и получим в самом низу сервера с низкой анонимностью.


Теперь просто-напросто выделим строки с такими серверами и удалим. А затем снова отсортируем по столбцу F, и увидим следующий результат


Теперь можно сохранить XLS, и пользоваться самыми быстрыми прокси (колонка F). В колонке D выбираем при этом варианты с максимальной анонимностью. В данном примере самыми лучшими соответственно будут сервера в строках 1, 3, 6, 7, 8.



Ну вот мы спарсили и отобрали лучшие сервера. Работу с парсингом по этому сайту можно считать законченной. Там есть ещё другие странички с серверами, но мы их не будем парсить, нам же нужны только самые свежие сервера. Списки прокси обновляются каждый день, так что можно запускать программу раз в день, отбирать лучшие варианты в EXCEL и пользоваться.

UPDATE:

Сегодня я решил немного переписать парсер и сделать вывод как в оригинале с шапкой сверху.


Для этого нужно заглянуть в код шапки. Как видно шапка заключена в тег 'thead'


Также есть теги 'tr' и 'th'


Соответственно нужно создать для шапки отдельную переменную head.

Код:
head = soup.find('thead').find_all('tr')

Теперь напишем для шапки отдельный цикл и на этот раз данные мы разместим не в словаре, а в кортеже


Код:
for tr in head:
        th = tr.find_all('th')
        ip1 = th[1].text
        port1 = th[2].text
        country1 = th[3].text.replace('\xa0', '')
        anonym1 = th[4].text.replace('\r\n        ', '')
        types1 = th[5].text.replace('\r\n\t\t\t\t\t', '').replace('\r\n        ', '')
        time1 = th[6].text

        data1 = (ip1, port1, country1, anonym1, types1, time1)

Если сейчас вывести на печать, получим такой результат


Наша конструкция сработала, шапка есть. Но присутствуют скобки и кавычки. От них легко избавиться, если печать вывести таким образом

Код:
print(", ".join([str(s) for s in data1]))

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


Наведёт окончательную красоту - результат скопируем в EXCEL, также сначала распределим по столбцам. И чтобы шапочку всегда было видно, нужно её закрепить.


Готово! Теперь, если мы прокрутим в самый низ, то всё равно шапка будет оставаться на месте.




Исходник:

Код:
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')
    head = soup.find('thead').find_all('tr')
    line = soup.find('table', id='theProxyList').find('tbody').find_all('tr')

    for tr in head:
        th = tr.find_all('th')
        ip1 = th[1].text
        port1 = th[2].text
        country1 = th[3].text.replace('\xa0', '')
        anonym1 = th[4].text.replace('\r\n        ', '')
        types1 = th[5].text.replace('\r\n\t\t\t\t\t', '').replace('\r\n        ', '')
        time1 = th[6].text

        data1 = (ip1, port1, country1, anonym1, types1, time1)
        print(", ".join([str(s) for s in data1]))

        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, port, country, anonym, types, time)
            print(", ".join([str(s) for s in data]))


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


if __name__ == '__main__':
    main()

Надеюсь, вы что-то узнали для себя нового
 
Название темы
Автор Заголовок Раздел Ответы Дата
Forevonly Пишем парсер на Python - грабим Proxy ч.1 Бруты/Парсеры/Чекеры 2
LightMan Интересно C# - Пишем Watchdog (Модуль защиты вашего трояна) .NET 1
K Интересно [Roman Akhromieiev] Telegram. Пишем ботов на Node JS и Telegraf (2020) Другое 1
Daniel01 Пишем малютку для скана сайта Софт от наших юзеров 6
АнАлЬнАя ЧуПаКаБрА Интересно Пишем брут на любой(почти) банк [OFX] Другие ЯП 1
shellest Пишем свой перехватчик СМС Android Другие ЯП 2
T0pDro4eR Пишем WinLocker на Delphi С/C++ 0
NikitaBoom Пишем отзывы и получаем от 200 рублей в день. Способы заработка 12
Forevonly Пишем скрипт для работы с VirusTotal-ом Полезные статьи 0
Forevonly Пишем шифровальщик на python Полезные статьи 0
Traven Пишем спамер Telegram, на Python Другое 0
Traven Пишем свой стиллер на Python Другие ЯП 4
Traven WinLocker на python. Пишем вирус. Другое 0
VLAD1337 Пишем переносной кейлоггер на C++ Полезные статьи 1
OUTCAST Пишем стиллер на Batch Вирусология 15
AngelOfLove Delphi для начинающих – Урок 6 – Пишем свой калькулятор С/C++ 0
eceNin [PHP] Пишем свой движок 2.0 Другие ЯП 0
Glods Пишем многопоточный Brute С/C++ 0
rif009 Пишем билдер C# вариант 1 .NET 2
АнАлЬнАя ЧуПаКаБрА INLINE Переписанный приватный парсер номеров [1 из 13] Проекты Private Keeper 1
E VkSearch — бесплатный парсер пользователей ВК Бруты/Парсеры/Чекеры 1
W SQL Hunter1.2 (парсер для Google и поиск уязвимостей sql) Spam/DDOS/Malware 12
mcaff Создать софт парсер Свободное общение и флейм 2
АнАлЬнАя ЧуПаКаБрА VkSearch — бесплатный парсер пользователей ВК Бруты/Парсеры/Чекеры 3
Khan Хакер из Бобруйска заработал полмиллиона долларов на брутфорс-атаках Новости в сети 0
B Заливы на карты Предоставляю работу. Ищу специалиста. 0
D Оптовый взлом почты на заказ (цена 20$) Взлом почты Mail.ru Yandex.ru Rambler.ru Ищу работу. Предлагаю свои услуги. 0
Ricardo Milos Продам Сим-карты на физ лиц | МТС | Мегафон | Билайн | Tele2 | Yota | Ростелеком | AIVA Финансы - биллинги, банки, кошельки, логи 0
H Заработок на арбитраже трафика в своем сообществе Вконтакте в 2021м году Способы заработка 0
H 1000$ на продаже сообществ (2021) Способы заработка 0
H Первые деньги на Авито без вложений (2021) Способы заработка 0
H 5000 р в день на трафике (2021) Способы заработка 0
K HASH Bhf.io Дамп на 19gb Раздача email 0
Р Интересно 1000 рублей на Delivery Club HONOR 10X Lite или HUAWEI P smart Способы заработка 0
NickelBlack MIX 587k на btc Раздача email 0
K Актуализируем / прочекаем Ваши телефонные базы на валид Пробив информации/Прозвоны 0
SamBonus ❗️Фотодропы. Фото шаблоны для отрисовки. Идеальное качество, любые комплекты на заказ. Ищу работу. Предлагаю свои услуги. 0
AnanasOfficial Реклама на теневых форумах. Ищу работу. Предлагаю свои услуги. 0
Р Интересно 100 руб на мобильник(нужны сканы) Другое 0
Z Продам лью на германию Финансы - биллинги, банки, кошельки, логи 1
zheka424 Заработок на партнерке банков от 2 000 руб Способы заработка 1
K Софт для наркутки на прямые трансляции youtube + чекер логов Продажа софта 0
B Обмен биткоинов на наличные в Москве Bitkov.net Обменники 0
Р Интересно Бесплатно отправляем СМС на любой номер Другое 2
lisan Чекну ваши базы, на свой банк 50/50 (Brute/Checker) Предоставляю работу. Ищу специалиста. 2
L Продам лью на юр счета украины Финансы - биллинги, банки, кошельки, логи 0
J нужны люди на доставку документов Предоставляю работу. Ищу специалиста. 0
T Дедик на 1 год от Alibaba Раздача dedic/ssh/proxy 0
Y Продам залью на xoom Финансы - биллинги, банки, кошельки, логи 0
A Как зарабатывать от 10$ на просмотре почты!!! Способы заработка 6

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