|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Net::HTTP - Скачивает указанную страницу, поддерживает многостраничный парсинг. Браузер парсерпростой парсинг сложных сайтов / ХабрГрубо говоря, проблема в том, что в браузере работает 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. habrahabr.ru Net::HTTP - Скачивает указанную страницу, поддерживает многостраничный парсинг. | A-Parser
a-parser.com Универсальный парсер выдачи поисковых систем яндекс, гугл, рамблер. Программа учета рабочего времени. CyberMake.ru
Скачать WebParser WebParser последней версии с установщиком СкачатьОбзор WebParser Быстрый и качественный сбор:
Скачать BlackSpider Обзор BlackSpider Скачать Расчет платы MPR-PersonalОбзор Расчет платы MPR-Personal Скачать WorkTimerОбзор WorkTimer Скачать DataKeeperОбзор DataKeeper CyberMake обладает авторскими правами на программы, размещенные на данном сайте, в том числе на:WebParser (Универсальный парсер поисковых систем)MPR (Реестр Объектов Негативного Воздействия)BlackSpider (Программа сбора данных с интегрированным парсером)WorkTimer (Учет рабочего времени)DataKeeper (Безопасное хранение данных)WebAuditor (Работа с сайтами) Парсер яндекс, парсер выдачи, парсер гугла, парсер dle сайтов, парсер поисковых систем, парсер поисковой выдачи, учет рабочего времени, безопасное хранение данных, cбор данных, телефонов, адресов, email, контактов, почтовых адресов, информации о компаниях и организациях, маркентиг, программа blackspider, универсальный сборщик данных с веб-сайтов и поисковых систем, интегрированный парсер поисковых систем, поиск потенциальных клиентов, для продвижения, рекламы, продажи, создания телефонных, e-mail справочников, справочников адресов Внимание! Запрещена загрузка программ, разработанных компанией CyberMake на любые сайты, включая файло-обменники.С уважением,Компания CyberMake. Мы в Google+cybermake.ru AftParser - бесплатный парсер - Личный блог ГарриПлагин парсера, написанный мной на самой заре моего «пути». Вполне достойная разработка, хотя в данный момент уровень говнокода в ней просто зашкаливает, что не мешает ей исправно трудиться на благо сетевого пролетариата. Используя этот парсер вы можете сделать свою собственную читалку rss лент или наполнить свой сайт кучей наворованных статей.Внимание: Как настроить AftParser можно прочитать тут. Нововведения:
Скачать:Желающие могут скачать плагин, перейдя во ссылке: (если вы обновляете парсер, то посмотрите инструкцию по установке) Aftparser Скачано: 5207, размер: 1.6 MB, дата: 28.Мар.2017Зачем я написал этот парсер?Делал изначально для себя, с элементарной целью — заработать на Sape. В 2013 году она еще была актуальным способом поднять пару кредитов, особенно для студента. Сейчас сапа уже не актуальна, вы, к превеликому прискорбию, не сможете там даже деньги, потраченные на домен окупить. Яндекс очень быстро банит молодые сайты, если на них начинают продавать ссылки. Даже не пытайтесь, короче. Ну хотя, все познается в сравнении, вдруг вам повезет =) Почему выложил за бесплатно?Потому что парсер стал неактуален. Году эдак в 2008 я был бы сказочно рад такому плагину. Еще бы! К сожалению в 2008 я только-только купил свой первый компьютер.(в конце 2007го) Разумеется тогда я понятия не имел ни о каком php и только-только начинал постигать этот неизведанный мир интернетов. Но… кто знает, вдруг вам он поможет начать свое дело в сети. Маловероятно конечно, но вдруг! Можно ли заработать на копипасте? (мини-кейс)Разумеется. Посмотрите вокруг. Вбейте в гугл и найдите кучу варезников — сайтов по тематике «скачать бесплатно», например. Копипаст — один из столпов интернета, тут 70% всей информации — не уникально. Но тут есть весьма существенная проблема. Дело в том, что вы не сможете получить прибыль с сайта на копипасте СРАЗУ. Только через год или полтора, причем это я описываю вам удачный вариант развития событий. Если вам вот прям срочно сегодня или через пол года нужны деньги — мой плагин вам никак не поможет, только навредит. Ну и еще. Как говорит Кейсуха: «копипаст должен быть вкусным». Собирайте данные с разных источников. Хорошо оформляйте. Представьте, что вы готовите не сайт, а кулинарный шедевр. И будет вам счастье. Но не сразу, а через год-полтора. Еще лучше будет, если вы спарсите, например 200 статей по какой-нибудь тематике и уникализируете их своими руками. В день можно переписывать по 20 статей, особенно если вы студент и у вас полно времени до сессии. За 10 дней вы получите вполне годный сайт с хорошим контентом, который начнет приносить трафик уже через полгода. Главное не лениться. Если уж совсем в лом — просто поменяйте названия скопированных статей на близкие по тематике. Причем новое название должно быть чуть длиннее старого. Если вы скопировали плагином статью, например, с названием «здоровое питание», поменяйте его на «Здоровье и питание» или «Польза здорового питания». Тогда ваша статья будет собирать трафик по этим ключам и таким образом где-то даже сможет вылезти в топ по поиску. Если же оставлять старые заголовки то ваш сайт всегда будет ниже в поиске, чем сайт, с которого вы взяли статью. Мифы о копипастеМногие сеошники распространяют такой фэйк: Если в скопированной статье вставлять ссылку на источник — не получишь бана. Это голимый пи*дежь. Не ведитесь на это, нечего буржуям трафик наращивать, пусть идут в самую глубокую «марианскую впадину». Никаких ссылок на источник делать не надо! Так-же скажу вам, что за копипаст не дают бана (АГС). Могут исключить из основной выдачи поисковика, это да, но бан вы не получите. ТрафикВ среднем с 3000 страниц я получил пять хомяков через пол года и около 50ти через год(а потом получил ручные санкции от гугла из-за своей криворукости). При этом никаких дополнительных работ по уникализации я не делал. Мало, согласен. Поэтому уникализируйте статьи и заголовки, как я писал выше. Тогда трафик вполне может перевалить и за 800 хомяков в сутки. Но тут уж как повезет, знаете ли.
Похожееaftamat4ik.ru Парсеры | A-Parser - парсер для профессионалов SEO | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Google | Парсер поисковой выдачи Google | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Google::Mobile | Универсальный парсер поисковой выдачи Google | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Google::Modern | Улучшеный парсер поисковой выдачи Google | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yandex | Парсер поисковой выдачи Яндекса | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::AOL | Парсер поисковой выдачи search.aol.com | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Bing | Парсер поисковой выдачи Bing | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Baidu | Парсер поисковой выдачи Baidu | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Dogpile | Парсер поисковой выдачи Dogpile | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::DuckDuckGo | Парсер поисковой выдачи DuckDuckGo | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::MailRu | Парсер поисковой выдачи Mail.ru | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::QIP | Парсер поисковой выдачи Яндекса через search.qip.ru | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Seznam | Парсер чешской поисковой системы seznam.cz | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yahoo | Парсер поисковой выдачи Yahoo | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::YouTube | Парсер поисковой выдачи YouTube | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Ask | Парсер американской поисковой выдачи Google через Ask.com | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Comcast | Парсер американской поисковой выдачи Google через Comcast.net | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Rambler | Парсер поисковой выдачи Рамблера | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Ixquick | Парсер поисковой выдачи Ixquick | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Google::position | Проверка позиций сайтов по ключевым словам в Google | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::MailRu::position | Проверка позиций сайтов по ключевым словам в Mail.ru | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yandex::position | Проверка позиций сайта по ключевым словам в Яндексе | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::QIP::position | Проверка позиций сайтов по ключевым словам в QIP | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::AOL::Suggest | Парсер подсказок AOL | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Google::Suggest | Парсер подсказок Google | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yandex::Suggest | Парсер подсказок Yandex | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Bing::Suggest | Парсер подсказок Bing | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yahoo::Suggest | Парсер подсказок Yahoo | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yandex::WordStat | Парсер ключевых слов и статистики показов с сервиса wordstat.yandex.ru | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yandex::WordStat::ByDate | Парсер статистики показов WordStat по месяцам и неделям | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yandex::WordStat::ByRegion | Парсер статистики ключевых слов по регионам и городам в WordStat | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yandex::Direct::Frequency | Проверка частотности ключевых слов через Яндекс.Директ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Google::Trends | Парсер популярных кейвордов по версии Google | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yandex::Register | Регистрирует аккаунты в Yandex | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Google::TrustCheck | Проверка сайта на trust (доверие) гугла(дополнительный блок ссылок в выдаче) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Google::Compromised | Проверка наличия надписи This site may be hacked в гугле | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Google::SafeBrowsing | Проверка домена в блеклисте гугла (подпись harm в выдачи) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Bing::LangDetect | Определение языка сайта через поисковик Bing | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yandex::TIC | Проверка тематического индекса цитирования домена в Яндексе | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Net::Whois | Определяет зарегистрирован ли домен, дату создания домена, а так же дату окончания регистрации и NS сервера | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Net::DNS | Парсер резолвит домены в IP адреса | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rank::CMS | Определение более 600 видов CMS на основе признаков. Определяет все популярные форумы, блоги, CMS, гестбуки, вики и множество других типов движков | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rank::Alexa | Парсер Alexa Rank | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rank::Alexa::API | Быстрый чекер алексы через API | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rank::Archive | Парсер даты первого и последнего кэширования сайта в веб архиве(archive.org) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rank::Linkpad | Парсер беклинков и статистики с сервиса linkpad.ru(бывший solomono) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rank::MajesticSEO | Парсер количества бек-линков с сервиса majesticseo.com | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rank::Mustat | Парсер оценки трафика на сайте, также стоимости и рейтинга домена | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rank::OpenSiteExplorer | Проверяет рейтинг домена или страницы по OpenSiteExplorer | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rank::OpenSiteExplorer::Extended | Расширенная версия парсера Rank::OpenSiteExplorer, парсит 39 различных параметров | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rank::SEMrush | Проверяет рейтинг SEMrush | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rank::SEMrush::Keyword | Собирает трафик, конкуренцию и другие параметры по ключевому слову из SEMrush | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rank::MegaIndex | Парсер статистики по сайту megaindex.com | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rank::Social::Signal | Парсер социальных сигналов | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Bing::Translator | Переводчик текста через сервис www.bing.com/translator/ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Google::Translate | Переводчик через сервис Google | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yandex::Translate | Переводит текст через переводчик Яндекса | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Bing::Images | Парсер картинок с поисковика Bing | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Google::Images | Парсер картинок Google Images по ключевым словам | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Google::ByImage | Парсер картинок Google Images по ссылке | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yandex::Direct | Парсер объявлений по кейворду через сервис direct.yandex.ru | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yandex::Catalog | Парсер сайтов по Яндекс.Каталогу | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yandex::Images | Парсер Яндекс Картинок | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Util::AntiGate | Распознавание каптчи через сервисы поддерживающие AntiGate API | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Util::ReCaptcha2 | Парсер для распознавание рекаптчи | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SEO::ping | Массовая отправка Ping запросов в сервисы поддерживающие Weblog API(Google Blog Search, Feed Burner, Ping-o-Matic и т.п.) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Check::RosKomNadzor | Проверка сайта в базе Роскомнадзора | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Bing::AddURL | Добавление ссылок в индекс Бинга | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SE::Yandex::Speller | Проверка страниц на ошибки в тексте через Яндекс.Спеллер | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GooglePlay::Apps | Парсер приложений Google Play | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Shop::Amazon | Парсер поисковой выдачи amazon.com | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Shop::Yandex::Market | Парсер Яндекс.Маркет | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Shop::AliExpress | Парсер поисковой выдачи AliExpress | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Check::BackLink | Проверяет нахождение обратной ссылки(ссылок) по базе сайтов | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HTML::LinkExtractor | Парсер внешних и внутренних ссылок с указанного сайта, может проходить по внутренним ссылкам до выбранного уровня | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HTML::TextExtractor | Парсер текстовых блоков, позволяет собирать контент с произвольных сайтов | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HTML::TextExtractor::LangDetect | Определение языка страницы, без использования сторонних сервисов | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HTML::EmailExtractor | Парсер e-mail адресов со страниц сайтов | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Net::HTTP | Загружает данные по заданной ссылке, на основе этого парсера можно создавать любые парсеры используя регулярные выражения для извлечения информации |
|
..:::Счетчики:::.. |
|
|
|
|