Скрипт Human Emulator парсер прокси

В этой статье мы подробно рассмотрим пример создания парсера прокси с ресурса freeproxylists.com

Прокси на этом сайте рассортированы по типам, но отображаются везде одинаково. Поэтому сделав скрипт для сохранения одного вида прокси, добавить сбор всех остальных будет очень просто. Начнём с первой ссылки:

На каждой такой странице висит около полутора десятка списков прокси, которые регулярно проверяются и пополняются. Наша задача – поочерёдно зайти в каждый список и собрать там необходимые данные. Human Emulator предоставляет много вариантов работы с различными ссылками. Лучше всего в данном случае подойдёт функция $anchor->click_by_inner_text . Работа по прямым урлам тут бесполезна, поскольку они постоянно меняются. Для работы по номеру нужна уверенность, что количество урлов на странице в течение долгого времени будет неизменным. А заморачиваться с работой по атрибутам, когда есть другие варианты, лучше не надо.

Щёлкнув правой кнопкой мышки по линку одного из списков, можно обнаружить в выпадающем меню функцию вроде $anchor->click_by_inner_text(‘elite #9′,’true’); , которую нужно добавить в скрипт вместе с $browser->wait_for(240,1); К пояснениям по этой части скрипта вернёмся позднее.

Наконец-то перед нами долгожданный список прокси. К сожалению, на этом сайте айпи и порты находятся в разных колонках, так что придётся немного повозиться, чтобы сохранить их в должном виде. Для получения данных поможет функция $webpage->get_body_inter_prefix_all();

На входе эта функция получает :

  • Первый префикс. Знак или знаки, с которых начинаются искомые данные.
  • Второй префикс. Знак или знаки, которыми закрываются искомые данные.
  • Включение/выключение отображения в найденном ХТМЛ элементов. Бывает true и false.
  • И два необязательных параметра:

  • Сдвиг получаемого текста от первого префикса на указанное число знаков. Может быть отрицательным.
  • Сдвиг получаемого текста от второго префикса на указанное число знаков. Может быть отрицательным.

Возвращает функция весь текст, попадающий между указанными нами двумя префиксами.

Если выделить часть страницы с прокси и нажать «Show Selected Source», то в открывшемся исходном коде страницы можно увидеть тэг TD> , закрывающий искомые нами айпишники с портами. Таким образом, заполненная и готовая к использованию функция будет выглядеть так:

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

Теперь нужно привести данные в удобоваримый вид. Сохранив полученные функцией цифры в текстовый файл можно заметить, что всё его содержимое разделено тэгом переноса и выглядит как одна строка. Куда удобней, когда после айпишника прокси через двоеточие идёт порт, а каждая такая конструкция находится на новой строке. Для того, чтобы этого добиться, придётся обратиться к PHP.

Добавьте в скрипт следующий код:

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

Давайте запустим его и проверим после отработки файл 123.txt на диске C.

Если восторг по поводу полученного результата уже закончился, продолжим. Самая сложная часть скрипта уже готова, нам осталось только настроить его для прохода по всем спискам проксей нужного нам типа на сайте. Вернёмся к восьмой строке нашего скрипта (нумерацию линий можно включить в настройках: F9, закладка «PHP редактор», галочка «Показывать нумерацию линий»). Как видите, в качестве первого аргумента для функции выступает имя списка, в котором присутствует цифра от 1 до 14. За это можно зацепиться для последовательного перехода и парсинга списков. Обернём весь наш скрипт в цикл for, в условиях которого можно задать последовательное увеличение значения переменной $ii. Эту переменную мы будем использовать для переходов к нужным спискам.

Должно получиться что-то вроде:

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

Домашние задания:

  • Найти в программе функцию, которая проверяет файл на дубли, и добавить в скрипт. Повторяющихся прокси на этом ресурсе довольно много.
  • Добавить в скрипт возможность сбора любого другого типа прокси с этого сайта.
  • Сравнить свой получившийся скрипт с примером ниже и разобраться для чего сделаны различные косметические добавки.

Пример готового скрипта:

скачать скрипт

Количество скачиваний: