Начальная

Windows Commander

Far
WinNavigator
Frigate
Norton Commander
WinNC
Dos Navigator
Servant Salamander
Turbo Browser

Winamp, Skins, Plugins
Необходимые Утилиты
Текстовые редакторы
Юмор

File managers and best utilites

Бесплатный PHP парсер сайтов на PhantomJS. Браузер парсер


простой парсинг сложных сайтов / Хабр

Каждый, кто пишет парсеры, знает, что можно распарсить сто сайтов, а на сто-первом застрять на несколько дней. Структура очередного отмороженного сайта может быть сколь угодно сложной, и, когда дело касается сжатых javascript-ов и ajax-запросов, расшифровать их и извлечь информацию с помощью обычного curl-а и регекспов становится дороже самой информации.

Грубо говоря, проблема в том, что в браузере работает javascript, а на сервере его нет. Нужно либо писать интерпретатор js на одном из серверных языков (jParser и jTokenizer), либо ставить на сервер браузер, посылать в него запросы и вытаскивать итоговое dom-дерево.

В древности в таких случаях мы строили свой велосипед: на отдельной машине запускали браузер, в нем js, который постоянно стучался на сервер и получал от него задания (джобы), сам сайт грузился в iframe, а скрипт извне отправлял dom-дерево ифрейма обратно на сервер.

Сейчас появились более продвинутые средства — xulrunner (crowbar) и watir. Первый — безголовый firefox. У crowbar есть даже ff-плагин для визуального выделения нужных данных, который генерит специальный парсер-js-код, однако там не поддерживаются cookies, а допиливать неохота. Watir позиционируется разработчиками как средство отладки, но мы будем его использовать по прямому назначению и в качестве примера вытащим какие-нибудь данные с сайта travelocity.com.

Watir — это ruby gem, через который идет взаимодействие с браузером. Есть версии для разных платформ — watir, firewatir и safariwatir. Несмотря на подробный мануал по установке, у меня возникли проблемы как в винде, так и в убунте. В windows (ie6) watir не работает на ruby 1.9.1. Пришлось поставить версию 1.8.6, тогда заработало. В убунте — для того, чтобы работал FireWatir (или обычный watir через firefox), в браузер нужно поставить плагин jssh. Но версия, предлагаемая для FireWatir на странице установки не заработала с моим FireFox 3.6 на Ubuntu 10.04.

Чтобы проверить, работает у вас jssh или нет, нужно запустить firefox -jssh, а потом послать что-нибудь на 9997 порт (telnet localhost 9997). Если порт не открывается, либо происходит аварийное завершение работы firefox (как у меня), значит нужно собрать свой jssh, подробная инструкция о сборке находится здесь.

Начнем писать парсер отелей с travelocity.com. Для примера выберем цены комнат во всех отелях по направлению New York, NY, USA на сегодня. Будем работать с FireWatir на Ubuntu 10.4.

Запускаем браузер и грузим страницу с формой:

require "rubygems"<br>require "firewatir"<br>ff = FireWatir::Firefox.new<br>ff.goto("http://www.travelocity.com/Hotels")<br> Заполняем форму нужными значениями и делаем submit:

ff.text_field(:id,"HO_to").val("New York, NY, USA")<br>ff.text_field(:id,"HO_fromdate").val(Time.now.strftime("%m/%d/%Y"))<br>ff.text_field(:id,"HO_todate").val(Time.tomorrow.strftime("%m/%d/%Y"))<br>ff.form(:name,"formHO").submit<br> Ждем окончания загрузки:

ff.wait_until{ff.div(:id,"resultsList").div(:class,"module").exists?}<br> wait_until — очень важная инструкция. При сабмите формы на сайте делается несколько редиректов, а после — ajax запрос. Нужно дождаться финальной загрузки страницы, и только ПОСЛЕ этого работать с dom-деревом. Как узнать, что страница загрузилась? Нужно посмотреть, какие элементы появляются на странице после выполнения ajax. В нашем случае после запроса к /pub/gwt/hotel/esf/hotelresultlist.gwt-rpc в resultsPage появляется несколько элементов <div>. Ждем, пока они не появятся. Замечу, что некоторые команды, например text_field, submit, уже включают в себя wait_until, поэтому перед ними данная команда не нужна.

Теперь делаем переход по страницам:

while true do<br> ff.wait_until{ff.div(:id,"resultsList").div(:class,"module").exists?}<br> ...<br> next_link = ff.div(:id,"resultcontrol-top").link(:text,"Next")<br> if (next_link.exists?) then next_link.click else break end<br>end<br> Там, где в коде стоит многоточие, находится непосредственное вытаскивание данных. Возникает искушение применить watir и в этом случае, к примеру, пробежать по всем дивам в resultsList такой командой:

ff.div(:id,"resultsList").divs.each.do |div|<br> if (div.class_name != "module") then next end<br> ...<br>end<br> И из каждого дива вытащить название отеля и цену:

m = div.h3(:class,"property-name").html.match(/propertyId=(\d+)[^<>]*>([^<>]*)<\/a[^<>]*>/)<br>data["id"] = m[1] unless m.nil?<br>data["name"] = m[2] unless m.nil?<br>data["price"] = div.h4(:class,"price").text<br> Но так делать не следует. Каждая команда watir-а к элементам dom-дерева — это лишний запрос к браузеру. У меня работает около секунды. Гораздо эффективнее за ту же секунду за раз выдернуть весь dom и мгновенно распарсить обычными регулярками:

ff.div(:id,"resultsList").html.split(/<div[^<>]*class\s*=\s*["']?module["']?[^<>]*>/).each do |str|<br>m = str.match(/<a[^<>]*propertyId=(\d+)[^<>]*>([\s\S]*?)<\/a[^<>]*>/)<br> data["id"] = m[1] unless m.nil?<br> data["name"] = m[2] unless m.nil?<br> m = str.match(/<h4[^<>]*class\s*=\s*["']?price["']?[^<>]*>([\s\S]*?)<\/h4[^<>]*>/)<br> data["price"] = m[1] unless m.nil?<br>end<br> Советую применять watir только там, где это необходимо. Заполнение и сабмит форм, ожидание, пока браузер не выполнит js код, и затем — получение финального html-кода. Да, доступ к значениям элементов через watir кажется надежнее, чем парсинг потока кода без dom-структуры. Чтобы вытащить внутренность некоторого дива, внутри которого могут быть другие дивы, нужно написать сложночитаемое регулярное выражение. Но все равно это гораздо быстрее. Если таких дивов много, самое простое решение — несложной рекурсивной функцией разбить весь код по уровням вложенности тегов. Я писал такую штуку в одном своем классе на php.

habr.com

Парсинг - как способ заглянуть дальше

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

Парсинг данных - одно из направлений автоматизации процессов в интернете, которым мы занимаемся. Для парсинга - мы разрабатываем собственных ботов, которым доверяем эту трудоёмкую и монотонную работу. Мы разрабатываем и простые и сложные парсеры - от сбора email адресов, до вычисления объёмов продаж позиций. Вы можете заказать - ботов - и запускать их самостоятельно, либо заказать парсинг - как услугу - и получить данные. Для парсинга с популярных ресурсов, чаще всего достаточно скачать парсер - запустить и через некоторое время у Вас будет файл со всеми необходимыми данными. Дело в том, что не под все необходимые задачи существуют уже готовые парсеры, либо работоспособность парсера уже на нуле - в виду того, что на необходимом ресурсе может поменяться вёрстка, а в программный код парсера не внесены изменения. Новичкам в этом вопросе, конечно хотелось бы скачать универсальный парсер, который сможет парсить везде и всё - такой себе парсер яндекс, ключевых слов, почты (email), телефонов, слов, текста, цен, адресов, товаров, каталогов, google, объявлений, соц сетей - vk, одноклассники, facebook - и чтобы всё запускалось нажатием одной кнопки, но в текущее время - качество парсинга достигается за счёт индивидуально разработанных парсеров под конкретную задачу. Стоимость парсинга данных складывается из стоимости разработки парсера и затрат на мощности для парсинга, а так же в некоторых случаях затрат на прокси.

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

Наши преимущества: 1. Мы не берём предоплату, если вам нужен сам бот, а не данные (когда нужны именно данные, а не парсер - у нас есть затраты на сервер под бота и эти затраты покрываются Вами в виде предоплаты). 2. Для создания ботов, мы используем Zennoposter, что позволяет нам делать парсеры под самые сложные условия (например для получения данных, необходимо запустить обработку javascript, совершить несколько действий на сайте, а информацию спарсить из ответного письма с сайта). 3. Мы соблюдаем сроки. 4. Опыт с 2011 года.

Архипов Владимир Валериевич

почта - [email protected]

skype - vipvodu

тел. +7-978-863-00-47

avtozenno.blogspot.com

Парсинг — Парсинг и все, что связано с ним

w3cselenium

Сегодня я Вам расскажу о стандарте WebDriver от W3C. Данный стандарт применим для управления браузерами посредством замечательного инструмента — selenium. Основным ключевым моментом является отправка команд и получение ответа от selenium посредством REST технологии (где запрос на получение данных осуществляется путем отправки GET запроса, а установка значения или изменения состояния посредством POST запроса, DELETE очистка куков, закрытие окон, закрытие сессии).

Читать далее «WebDriver»

    Сегодня пойдет речь об еще одном интересном инструменте — PhantomJS. Что это такое и с чем его едят?    PhantomJS — это браузер в консоле на основе Webkit, позволяющий посредством JavaScript производить управление им для серфинга  и автоматизация действий в сети Интернета. Распространяется данная программа под лицензией — BSD License. Официальный сайт — http://phantomjs.org/. К сожалению скудная документация и к тому же только на англ. языке находится у них на сайте — http://phantomjs.org/documentation/. Читать далее «PhantomJS — Webkit в консоли.»

PHP 7.0.7  Вчера, 26 мая 2016г. обновился PHP  7 до версии 7.0.7.  Были исправлены несколько ошибок:

  • исправлена утечка памяти при вызове $this в анонимной функции (#71737)
  • исправлена ошибка перезаписи имен классов (#72159)
  • исправлена ошибка при работе implode с большими числами в массиве (#72100)
  • исправлена ошибка при вызове константы — CURLE_SSL_CACERT_BADFILE (#68658)

С полным списком исправлений можно ознакомиться здесь.

CURL upload    Очень часто встает вопрос отправки POST запроса на удаленный сервер. Давайте подробно рассмотрим как это сделать с помощью библиотеки CURL. Читать далее «CURL: POST запрос, составное содержимое (multipart/form-data)»

xrumer

    В этой статье рассмотрим еще одну успешную представительницу программ по парсингу — XRumer. Основное назначение этой программы не собирать данные, а публиковать данные на сайтах, форумах и в социальных сетях. Читать далее «XRumer»

Datacol    Рассмотрим еще одну программу, которая отлично справляется с автоматизацией процесса парсинга — Datacol. Читать далее «Datacol»

images

   Встречайте обновление PHP до версии 7.0.6! PHP не стоит на месте и развивается! И очередное обновление тому подтверждение. Это новость порадовала поклонников PHP.  В этом обновлении было куча исправлений «багов», что тоже не может не радовать! Итак, что же было исправлено? Читать далее «Новости. Вышло обновление PHP 7»

DOMDocument

    В PHP есть замечательный класс — DOMDocument. В чем же его замечательность? Данный класс изначально предназначался для парсинга XML файлов. Он представляет из себя удобный интерфейс по манипуляции элементами DOM модели. Данный класс можно использовать не только для парсинга XML документов, но и для HTML. Читать далее «DOMDocument»

guzzle

    Guzzle — удобная библиотека для получения содержимого веб сайта и последующей обработки его. Данная библиотека по умолчанию использует — CURL, а в случае ее отсутствия, то использует обертку — PHP потоков (php stream). Guzzle распространяется под лицензией — MIT. Она способна выполнять как синхронные запросы к веб ресурсу, так и работать с асинхронными запросами. Читать далее «Guzzle»

tceburashka.com

Parser - парсер для профессионалов SEO

A-Parser - многопоточный парсер поисковых систем, сервисов оценки сайтов, ключевых слов, контента(текст, ссылки, произвольные данные) и других различных сервисов(youtube, картинки, переводчик...), всего A-Parser содержит более 70 парсеров

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

  • Используйте встроенные парсеры чтобы с легкостью получать и анализировать любые данные
  • Воспользуйтесь нашим каталогом парсеров и пресетов для расширения возможностей A-Parser и решения нестандартных задач
  • Если вы продвинутый пользователь - создавайте свои собственные парсеры на основе регулярных выражений или XPath
  • Владеете JavaScript? Тогда A-Parser предлагает вам беспрецедентную возможность программировать свои собственные парсеры, используя всю мощь возможностей A-Parser!
  • Для автоматизации мы предлагаем API позволяющий легко встроить A-Parser в ваши бизнес процессы, а также для создания сервисов любого уровня сложности на базе нашего парсера

Кроме этого мы предоставляем услуги по составлению заданий и написанию парсеров под ваши задачи, в кратчайшие сроки и по демократичной цене. Хотите спарсить целиком интернет магазин(Ozon, Amazon, AliExpress)? Проверить 100 миллионов сайтов по вашим признакам? Получить данные с любого сайта в структурированном виде(CSV, JSON, XML, SQL)? В решении этих задач поможет наша дополнительная платная поддержка

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

  • SEO-оптимизация сайтов и Web-аналитика
    • Сбор баз ссылок для XRumer, A-Poster, AllSubmitter, ZennoPoster...
    • Оценка сайтов и доменов по множеству параметров
    • Мониторинг позиции любых сайтов в поисковых системах
    • Сбор контента(текст, картинки, ролики) для генерации сайтов(дорвеев)
    • Отслеживание обратных ссылок
    • Сбор произвольной информации с любых сайтов(например телефоны/e-mails, сообщения с форумов, объявления...)
    • Сбор и оценка ключевых слов
    • Сбор списка обратных ссылок
    • И многое другое
  • Web-безопасность
    • Сбор и фильтрация баз ссылок по признакам
    • Определение CMS сайтов
    • Формирование произвольных GET, POST запросов с одновременной фильтрацией ответа
  • Сетевое администрирование
    • Работа с DNS службой - резолвинг доменов в IP адреса
    • Работа с Whois - дата регистрации и окончания регистрации доменов, name-cервера

Данный список включает лишь частые варианты применения парсера, A-Parser позволяет решать самые нестандартные задачи комбинируя его возможности, такие как:

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

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

Для дальнейшего знакомства с A-Parser'ом рекомендуется полноценно оценить его преимущества, ознакомится с отзывами пользователей, выбрать необходимую версию и перейти к оплате лицензии

a-parser.com

Бесплатный PHP парсер сайтов на PhantomJS

Опубликовано: 08.06.2016 13:38

Просмотров: 17348

Решил Вам предоставить информацию, которая поможет спарсить ЛЮБОЙ сайт. Теперь КАЖДЫЙ сможет парсить всё, что душе угодно. К тому же написать бесплатный грабер сайтов не составит никакого труда...

Как я решил спарсить Авито, или PhantomJS + PHP как идеальный способ сбора информации

Здравствуйте, мои дорогие читатели! Сегодня я решил поделиться с Вами информацией о создании бесплатно парсера своими руками, или как некоторые люди говорят - грабера.

Для тех, кто в танке и не в теме. Парсер (или парсинг, т.е. процесс) - это программный продукт, который помогает собирать в автоматическом режиме информацию с площадок. Я таким образом смог насобирать несколько тысяч песен с кучи сайтов. Я уже писал об этом в моей статье Пишем php парсер сайтов с нуля, но я пользовался немного другой библиотекой и был далёк от совершенства.

Все основные проблемы  моего прошлого подхода заключались в том, что в старом методе сбора не было эмуляции работы пользователя. Т.е. к серверу приходили запросы в автоматическом режиме, и более-менее умные сайты (я сейчас говорю про злополучный Avito)  быстро распознавали меня как робота и блокировали доступ к сайту. ну сделал я 5-10 обращений к сайту и что дальше? Бан на полчаса или на весь день. После такого жить просто не хотелось. Тогда я всё бросил и решил уйти в монахи, но через год понял. что это не моё. И нашёл для себя PhantomJS.

PhantomJS сделает из машины - человека

Фантом - это такой webkit-браузер, который можно запускать без графического интерфейса и бегать по страницам других сайтов без боязни быть заблокированным. Если попроще, то это оболочка, которая придаёт жизнь Вашему парсеру, помогает дать ему душу. Т.е. с использованием PhantomJS вы сможете представиться каждому порталу как Настоящий пользователь!

Сейчас я опишу подробную инструкцию по тому, с чего начать, опишу несколько интересных фишек, которые я смог обнаружить на просмотрах интернета + часть я вывел опытным путём. Поехали!

1. Скачать программу

В начале нам нужно идти на сайт разработчиков. На главной странице скачиваем библиотечку и радуемся, теперь у нас есть свой Фантом! 

Заходим в папку bin и видим файл под названием phantomjs.exe Именно этот файл и будет играть основную роль в нашем создании бесплатном парсере (Вы тратите только своё время, не более того). 

2. Переходим к PHP коду

Давайте в начале создадим код на PHP, который будет обращаться к нашему фантому и выводить полученные результаты. Кстати, это вариант под номером 1.

Я написал вот такую функцию:

blic function parser() {         try {             echo(shell_exec('W:\OpenServer\domains\realty\phantomjs\bin\phantomjs.exe W:\OpenServer\domains\realty\phantomjs\bin\script2.js'));             flush();         } catch (Exception $exc) {             echo('Ошибка!');             echo $exc->getTraceAsString();         }     }

 

В функцию shell_exec я передаю Путь, где лежит фантом и Путь к исполняемому JavaScript-коду. Да да, весь парсинг будет на JavaScript, т.е любой из Вас сможет безболезненно использовать JQuery и JS и легко работать с DOM-моделью (блоками сайта).

 3. Пришла пора JavaScript

А теперь давайте изучим код, на примере которого я смог легко спарсить страничку с Avito. Вот пример:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

// Example using HTTP POST operation   "use strict";   //Тут объявляю несколько юзерагентов, типа мы под разными браузерами заходим постоянно var useragent = []; useragent.push('Opera/9.80 (X11; Linux x86_64; U; fr) Presto/2.9.168 Version/11.50'); useragent.push('Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25'); useragent.push('Opera/12.02 (Android 4.1; Linux; Opera Mobi/ADR-1111101157; U; en-US) Presto/2.9.201 Version/12.02');   //Здесь находится страничка, которую нужно спарсить var siteUrl = 'https://m.avito.ru/komsomolsk-na-amure/kvartiry/1-k_kvartira_29_m_45_et._665423964'; var page = require('webpage').create();   //Это я передаю заголовки  //Их можно посмотреть в браузере на закладке Network (тыкайте сами, ищите сами) page.customHeaders = {     ":host": "m.avito.ru",     ":method": "GET",     ":path": "/komsomolsk-na-amure/kvartiry?user=1&hist_back=1",     ":scheme": "https",     ":version": "HTTP/1.1",     "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",     "accept-language": "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4",     "cache-control": "max-age=0",     "upgrade-insecure-requests": "1",     "user-agent": useragent[Math.floor(Math.random() * useragent.length)] };   //Здесь я отключаю загрузку сторонних скриптов для ускореняи парсинга page.onResourceRequested = function (requestData, request) {     if ((/http:\/\/.+?\.css$/gi).test(requestData['url'])) {         request.abort();     }     if (             (/\.doubleclick\./gi.test(requestData['url'])) ||             (/\.pubmatic\.com$/gi.test(requestData['url'])) ||             (/yandex/gi.test(requestData['url'])) ||             (/google/gi.test(requestData['url'])) ||             (/gstatic/gi.test(requestData['url']))             ) {         request.abort();         return;     } };   //Этот код выводит ошибки, дебаг так сказать page.onError = function (msg, trace) {     console.log(msg);     trace.forEach(function (item) {         console.log('  ', item.file, ':', item.line);     }); };   String.prototype.stripTags = function() {   return this.replace(/<\/?[^>]+>/g, ''); };   //Объявим переменные для инф-и об объекте var href, json, price, adress, fio, descriptionShort, descriptionFull;   //Здесь мы открываем страничку page.open(siteUrl, function (status) {     if (status !== 'success') {         console.log('Unable to access network');     } else {        //Получим ценник квартирки         var price = page.evaluate(function () {             return [].map.call(document.querySelectorAll('.price-value'), function (span) {                 return span.innerText;             });         });       //Выведем       console.log(price);     } });

С помощью такого небольшого кода я смог зайти на страницу Авито и спарсить цену квартиры. А на что способны Вы?) Я собирал таким образом всю информацию с практически ЛЮБОГО сайта. Здесь нет предела возможностям.

А теперь давайте ка покажу несколько фишечек при работе с PhantomJS.

Фишечки для работы с Фантомом

1.Ожидание происхождения какого-то события

waitFor(   function() {     return page.evaluate(function() {       // Кликаем на кнопку       $('.button').trigger('click');       // Ждём, пока элемент не станет скрытым       return $('.button').is(':hidden');     });   }, function() {     // Выполняем действия после того, как необходимый элемент появился на экране   });

Очень полезно, если хотите нажать на какую-то кнопку и подождать возврата какого-то результата. Способ поможет обойти очень много защитных функций сайтов.

2. Подключение JQuery к сайту (вдруг нет, а вот вдруг)

page.open(siteUrl, function(status) {   if (status === 'success') {     // Инклудим jQuery     page.injectJs('//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js');     //и что-то там другое   } });

Просто вставляем в загруженную страницу свою библиотеку и начинаем работать!

3. Выключаем всё CSS и картинки

А вот такой простейший код поможет отключить загрузку всех CSS-стилей и картинок, дабы ускорить работу сайта.

//Отключение картинок page.settings = {   loadImages: false };   // Отключение CSS page.onResourceRequested = function(requestData, request) {   if ((/http:\/\/.+?\.css$/gi).test(requestData['url'])) {     request.abort();   }

Остальные идеи и прелести Вы сможете подсмотреть в моём верхнем коде. Просто посмотрите функции и возьмите себе на заметку какие-то нужные вещи.

Выводы

Могу сказать, что с помощью PhantomJS можно написать бесплатный PHP парсер сайтов всего лишь за пару дней. Любая площадка будет подвластна Вам, только если Вы сможете привлечь свою светлую голову в этот процесс.

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

Скоро будет новый подгончик по материалам! Всем огромное спасибо за посещение моего сайта!

Если статья была для Вас полезной - Поделитесь ссылкой!

Советуем почитать

Закрепленные

Понравившиеся

seo-love.ru

Net::HTTP - Скачивает указанную страницу, поддерживает многостраничный парсинг. | A-Parser

  • Собираемые данные(top)

    • Код ответа сервера
    • Описание ответа сервера
    • Заголовки ответа сервера
    • Контент
    • Прокси использованные при данном запросе
    • Массив со всеми страницами (используется при работе опции Use Pages)

    Возможности(top)

    • Опция Check content - проверяет, если регулярное выражение не сработало, то страница будет загружена заново с другим прокси
    • Опция Use Pages - позволяет перебрать указанное количество страниц с определенным шагом. $pagenum - переменная, содержащая текущий номер страницы при переборе. Ее нужно использовать для подстановки в нужное место.
    • Опция Check next page - RegEx который определяет существует ли следующая страница или нет, и если существует - переходит на нее, в рамках указанного лимита (0 - без ограничений)
    • Опция Page as new query - передает переход на следующую страницу как новый запрос, тем самым позволяя убрать ограничение на количество страниц для перехода

    Варианты использования(top)

    Запросы(top)

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

    Нажмите, чтобы раскрыть...

    Возможные настройки(top)

    Общие настройки для всех парсеровПараметрЗначение по умолчаниюОписание
    Good statusAllВыбор какой ответ с сервера будет считается успешным. Если при парсинге будет другой ответ от сервера, то запрос будет повторен с другим прокси
    Good code RegEx-Возможность указать регулярное выражения для проверки кода ответа
    MethodGETМетод запроса
    POST body-Контент для передачи на сервер при использовании метода POST. Поддерживает переменные $query - url запроса, $query.orig - исходный запрос и $pagenum - номер страницы при использовании опции Use Pages
    Cookies-Возможность указать cookies для запроса
    User agentMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)Заголовок User-Agent при запросе страниц
    Additional headers-Возможность указать произвольные заголовки запроса, с поддержкой возможностей шаблонизатора и использованием переменных из конструктора запросов
    Read only headersЧитать только заголовки. Позволяет в некоторых случаях экономить трафик, если нет необходимости обрабатывать контент.
    Detect charset on contentВозможность распознавать кодировку на основе содержимого страницы
    Emulate browser headersВозможность эмулировать заголовки браузера
    Max redirects count7Максимальное кол-во редиректов по которым будет переходить парсер
    Max cookies count16Максимальное число Cookie для сохранения
    Bypass CloudFlareАвтоматический обход проверки CloudFlare на браузер

a-parser.com

Установка и обновление | A-Parser

Версии A-parser(top)

A-Parser Release - последняя полноценная версия парсера. Подробнее о выходе новых версий можно прочитать в новостях на главной странице.

A-Parser Beta - промежуточная версия парсера которая постоянно дополняется. Подробнее об изменениях можно прочитать на форуме в разделе Next Release. Чтобы скачать последнюю версию A-Parser Beta, нужно нажать кнопку Update, и после загрузки новой версии, скачать ее.

Установка на Windows(top)

1. В Members Area проверьте верно ли прописан ваш IP-адрес (для пользователей у которых динамический IP-адрес, требуется менять IP-адрес при смене на новый)​2. Перейдите во вкладку A-Parser - Downloads 3. Перед скачиванием нужной версии, следует предварительно нажать Update, для обновления до последней версии A-Parser 4. Cкачайте нужный архив и распакуйте в любую директорию 5. Зайдите в папку aparser и запустите aparser.exe 6. После появления окна сервера, откройте в браузере http://127.0.0.1:9091/index.html 7. Пароль по умолчанию пустой​Внимание!
  • Известны проблемы с совместимостью с Norton Internet Security - возможна нестабильная работа парсера
  • Guard Mail.ru - необходимо полностью удалить из системы
  • Если парсер не запускается или падает в процессе работы с такими записями в логе:

    IO error: ... Append: cannot writeилиsysopen: Permission denied

    Нажмите, чтобы раскрыть...

    то нужно отключить службу индексации: Спойлер: Инструкция
    1. Открываем Управление службами: Пуск - Выполнить или сочетание клавиш Win + R, вводим services.msc
    2. В открывшемся окне выбираем Windows Search, нажимаем правую кнопку мыши и выбираем Свойства
    3. В окне свойств на вкладке Общие меняем Тип запуска на Отключена и нажимаем Применить
    4. Если после этого кнопка Остановить активна - нажимаем ее и останавливаем службу
    [​IMG]

Установка на Linux(top)

На данный момент доступна одна версия одновременно для 32 и 64 битных систем. Для удобства скачивания с сервера реализованы временные ссылки, в Member Area нужно нажать Get one-time link - по полученной ссылке можно один раз скачать дистрибутив.
  1. В Members Area перейдите во вкладку A-Parser - IP Configuration и пропишите IP-адрес
  2. Перейдите во вкладку A-Parser - Downloads
  3. Перед скачиванием нужной версии, следует предварительно нажать Update, для обновления до последней версии A-Parser
  4. Получите временную ссылку для скачивания
  5. В шелле заходим в директорию куда будем ставить (нельзя ставить в директорию с веб доступом!), и выполняем следующие команды:

# wget http://a-parser.com/members/onetime/ce42f308eaa577b5/aparser.tar.gz # tar zxf aparser.tar.gz# rm -f aparser.tar.gz# cd aparser/# chmod +x aparser# ./aparser

Нажмите, чтобы раскрыть...

Иногда на сервере может не хватать каких то библиотек, например:

# ./aparser./aparser: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

Нажмите, чтобы раскрыть...

Просто ставим недостающие библиотеки:

# yum -y install zlib

Нажмите, чтобы раскрыть...

И заного запускаем апарсер:

# ./aparser

Нажмите, чтобы раскрыть...

Если не выдается никаких сообщений - это свидетельствует об успешном запуске

Далее будет приведен список ошибок и пути решения:На Debian x64:

./aparsererror while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

Нажмите, чтобы раскрыть...

Решение:

apt-get install lib32stdc++6

Нажмите, чтобы раскрыть...

На Debian x64:

./aparser-bash: ./aparser: No such file or directory

Нажмите, чтобы раскрыть...

Решение:

apt-get install libc6.i386

Нажмите, чтобы раскрыть...

На Debian x64:

./aparser./aparser: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

Нажмите, чтобы раскрыть...

Решение:

apt-get install lib32z1

Нажмите, чтобы раскрыть...

На Ubuntu x64:

./aparser-bash: ./aparser: No such file or directory

Нажмите, чтобы раскрыть...

Решение:

apt-get install ia32-libs

Нажмите, чтобы раскрыть...

На CentOS x64:

./aparser./aparser: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

Нажмите, чтобы раскрыть...

Решение:

yum -y install libstdc++.x86_64yum -y install libstdc++.i686

Нажмите, чтобы раскрыть...

На CentOS x64:

/aparser: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

Нажмите, чтобы раскрыть...

Решение:

yum -y install glibc.i686

Нажмите, чтобы раскрыть...

На CentOS x64:

./aparser: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

Нажмите, чтобы раскрыть...

Решение для CentOS release 5.7 (Final):

yum -y install zlib.i386

Нажмите, чтобы раскрыть...

Решение для CentOS release 6.3 (Final):

yum -y install zlib.i686

Нажмите, чтобы раскрыть...

Установка на FreeBSD(top)

Установка аналогична как на Linux, предварительно необходимо настроить совместимость с Linux:

Обновим каталог репозитория FreeBSD:

pkg updatepkg upgrade

Нажмите, чтобы раскрыть...

Установим linux эмулятор, для начала загрузив модуль ядра linux:

kldload linuxpkg install linux_base-f10-10_7

Нажмите, чтобы раскрыть...

Установим linprocfs, добавив запись в /etc/fstab:

echo 'linproc /compat/linux/proc linprocfs rw 0 0' >> /etc/fstab

Нажмите, чтобы раскрыть...

Добавим загрузку модуля linux при загрузке системы, добавив в /etc/rc.conf строку:

echo 'linux_enable="YES"' >> /etc/rc.conf

Нажмите, чтобы раскрыть...

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

reboot

Нажмите, чтобы раскрыть...

После перезагрузки следовать инструкции по установке на Linux, используя Linux дистрибутив A-Parser

Далее будет приведен список ошибок и пути решения:

На FreeBSD x64:

pkg install linux_base-f10-10_7...ELF binary type "3" not known./compat/linux/sbin/ldconfig: Exec format error

Нажмите, чтобы раскрыть...

Решение:

kldload linuxpkg remove linux_base-f10-10_7pkg install linux_base-f10-10_7

Нажмите, чтобы раскрыть...

Тюнинг Linux для большого числа потоков(top)

По умолчанию Linux лимитирует количество открытых файлов и сокетов до 1024 на пользователя, чтобы увеличить лимит выполните следующие команды:

echo 'root soft nofile 10240' >> /etc/security/limits.confecho 'root hard nofile 10240' >> /etc/security/limits.conf

Нажмите, чтобы раскрыть...

Так же необходимо увеличить размер таблицы ip_conntrack:

sysctl -w net.ipv4.netfilter.ip_conntrack_max=262144echo 'net.ipv4.netfilter.ip_conntrack_max=262144' >> /etc/sysctl.conf

Нажмите, чтобы раскрыть...

(При отсутствии фаервола iptables на эту команду выведется ошибка - просто проигнорируйте её)

Необходимо перезайти в шелл(ssh), после чего перезапустить A-ParserЕсли вы запускаете парсер не под рутом, а под другим пользователем, то замените root на имя пользователя

Для проверки текущего лимита необходимо выполнить

ulimit -n

Нажмите, чтобы раскрыть...

На некоторых системах дополнительно требуется прописать в файл /etc/pam.d/common-session следующую строчку:

session required pam_limits.so

Нажмите, чтобы раскрыть...

Обновление программы(top)

Внимание! Если не указано иное, то достаточно обновить только исполняемый файл.

Инструкция по обновлению программы для Windows и Linux через пользовательский интерфейс(top)

  • Выбрать Канал обновления в Общих настройках
  • В меню Инструменты перейти во вкладку Обновить A-parser
  • Проверить наличие последних обновлений
  • Нажать Обновить. Обновление произойдет автоматически

Инструкция по обновлению для Windows вручную(top)

В общем случае достаточно заменить исполняемый файл парсера, если другое не указано.
  1. Останавливаем A-Parser - нажимаем Stop server
  2. Скачиваем с Member Area архив и перезаписываем aparser.exe
  3. Запускаем aparser.exe

Инструкция по обновлению для Linux вручную(top)

  1. Останавливаем A-Parser - в консоли выполняем killall aparser
  2. Скачиваем с Member Area архив и перезаписываем файл aparser
  3. Запускаем aparser - в консоли выполняем ./aparser
Пример с использованием временной ссылки:

wget http://a-parser.com/members/onetime/0d19621928c25a48/aparser.tar.gzkill $(cat files/pid)sleep 1tar xzf aparser.tar.gz -O aparser/aparser > aparserrm -f aparser.tar.gzchmod +x aparser./aparser

Нажмите, чтобы раскрыть...

a-parser.com


 

..:::Новинки:::..

Windows Commander 5.11 Свежая версия.

Новая версия
IrfanView 3.75 (рус)

Обновление текстового редактора TextEd, уже 1.75a

System mechanic 3.7f
Новая версия

Обновление плагинов для WC, смотрим :-)

Весь Winamp
Посетите новый сайт.

WinRaR 3.00
Релиз уже здесь

PowerDesk 4.0 free
Просто - напросто сильный upgrade проводника.

..:::Счетчики:::..