Парсим прокси с попмощью Python


Парсинг бесплатных прокси для SEO или для других нужд с помощью Python

Прокси для SEO играет не последнюю роль и порой подворачивается интересная идея, но т.к. прокси нет и платить за них не охота, а компания денежку на идею не дает, ты откладываешь все на потом, а потом никогда не наступает! (Из личного опыта:)))

И вот сегодня мы решили написать небольшой и далеко не идеальный но рабочий код для простого парсинга прокси. Что будет делать код: получит данные с сайта и сохранит нужные в текстовый документ. Для начала, что же это за прокси и зачем они?

Прокси – звено-посредник между компьютером, который использует абонент, и системой интернет-серверов. Если не вдаваться в подробности, это удаленный компьютер-посредник для выхода пользователя в Интернет. Его основные задачи заключаются в трансляции всех запросов пользователя в Сеть и отправке обратно полученных ответов.

Вот такой вот прокси, если немного углубиться, то прокси применяется для защиты сетей, лимитирования трафика, накрутки поведенческих и просмотров, анонимность посещения и так далее. В нашем случае прокси нужны больше чтобы сервисы, к которым мы можем часто обращаться нас не забанили, ну и накрутка тоже.

Для создания сиего чуда нам понадобиться две библиотеки - bs4 и urllib, если эти библиотеки у вас не установлены, вы можете их легко установить через терминал или командную строку - pip install (и название бибилиотеки без скобок).

Если библиотеки установлены можем приступать к самому коду и для начала импортируем бибилиотеки:


    from bs4 import BeautifulSoup
    import urllib

Затем нам необходимо использовать user agent для идентификации. так как сайт, который мы будем парсить требует идентификации, более подробно что такое user agent можно посмотреть тут, сам же список юзерагентов можно скачать или скопировать в сети по соответствующему запросу, нам достаточно одного, так как для этой задачи болше не понадобиться:


    headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3)
    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36"}

Следующим шагом добавим количество страниц на сайте, который мы собираемся парсить:

Поиск бесплатных прокси

Создаем переменную, которая будет хранить данные о количестве странц:


    num_of_page = 50

Теперь создадим переменную с нулевым значением, которое будет меняться в соответствии с URL каждой страницы, парсинг которых будем проводить:


    numbers_url = 0

На следующем шаге создадим цикл, который будет проходить то количество страниц, которые мы задали в переменной num_of_page:


    for i in range(num_of_page):

Теперь присваиваем переменной URL начальной страницы для старта парсинга и будет добавлять при каждой итерации номер пагинации следующего URL:


    url = 'https://hidemy.name/ru/proxy-list/?start=' + str(numbers_url)

Отправляем запрос на сервер с данными URL и User-agent и открываем ее с помощью библиотеки urllib:


    req = urllib.request.Request(url=url, headers=headers)
    open_url = urllib.request.urlopen(req)

Получаем данные с помощью библиотеки BeautifulSoup:


    soup = BeautifulSoup(open_url, 'html.parser')

С помощью цикла получаем первый столбец таблицы, в которой находятся IP прокси и извлекаем все данные в этом столбце, после чего преобразовываем получаемые данные в строки для более удобного доавления:


    for row in soup.findAll('table')[0].tbody.findAll('tr'):
        first_column = row.findAll('td')[0].contents
        string = ",".join(first_column)

Преобразованные данные записываем в текстовый документ, каждый IP с новой строки, таким образом получим удобный список для дальнейшего использования, файл нужно предварительно создать и указать к нему путь в нашем коде:


    with open(r'C:\findproxy.txt', 'a') as txt_file:
        txt_file.write(str(string) + "\n")

И последним шагом изменяем переменную numbers_url, которая будет добавлена к URL и является следующим адресом для парсинга:


    numbers_url = numbers_url + 64

Ниже вы можете скопировать весь код польностью, если вам помог наш пост, поделитеь ним в телеграм или через другой удобный ресурс, это поможет нам чаще публиковать интересный контент, наш канал https://t.me/py4seo


    from bs4 import BeautifulSoup
    import urllib

    headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3)
    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36"}
    num_of_page = 50
    numbers_url = 0
    for i in range(num_of_page):

        url = 'https://hidemy.name/ru/proxy-list/?start=' + str(numbers_url)
        req = urllib.request.Request(url=url, headers=headers)
        open_url = urllib.request.urlopen(req)
        soup = BeautifulSoup(open_url, 'html.parser')
        for row in soup.findAll('table')[0].tbody.findAll('tr'):
            first_column = row.findAll('td')[0].contents
            string = ",".join(first_column)
            print (string)
            with open(r'C:\findproxy.txt', 'a') as txt_file:
                txt_file.write(str(string) + "\n")
        numbers_url = numbers_url + 64