понедельник, 11 марта 2013 г.

Парсинг с операторами и без прокси


Привет Всем! Данная статья написана в рамках 4-го конкурса статей Botmaster.
Вечная проблема всех вебмастеров - это база сайтов. Всегда все упирается в прокси. Чтобы собрать большую базу сайтов, требуются тонны качественых и новых проксей. Как вы уже догадались, я буду писать о хрефере. В данном манауле будет рассмотрен способ парсинга поисковых систем с использованием операторов и без прокси. В последних апдейтах хрумера была многократно увеличена пробиваемость движка Discuz (тех вариантов, где регистрация оформлена через "member.php?mod=register").
На примере этого движка я и буду демонстрировать свой способ парсинга. Для начала нам понадобятся запросы для парсинга. Мы не будем использовать запрос Ботмастера, т.к. он ведет нас на страницу регистации. Большую базу собрать по такому запросу не получиться (будет много дублей), т.к. на страницах регистрации обычно один и тот же текст: Login, Password, Email и т.д. И так, мы будем искать сайты, работающие на движке Discuz. Введем запрос "member.php?mod=register" в Google.
И что мы видим на скриншоте? В тайтле 3 сайта в выдаче мы видим, что сайт работает на движке Discuz. Заходим на указанный форум из выдачи Google, гуляем по форуму и ищем как выглядит адрес топика данного движка. Я нашел один из топиков, и вы видите один из них на скриншоте.
Как видно на скриншоте адрес топика форума следующий: http://codersclub.org/discuzx/forum.php?mod=viewthread&tid=379&extra=page%3D1. Поэтому запрос для парсинга будет "inurl:forum.php?mod=viewthread" (без кавычек). Создайте в папке "Templates" файл discuz_addwords.txt и добавьте в него строку: "inurl:forum.php?mod=viewthread" (без ковычек), а также в этой же папке создайте файл discuz.txt и добавьте в него строку: "forum.php?mod=viewthread" (без ковычек).
Еще нам понадобится база слов для парсинга. Я использую мультиязычную базу: русский, английский, немецкий, китайский и т.д. В качестве источника слов для парсинга можно использовать иностранные книги. Порывшись в выдаче Google можно найти много книг на французском, японском и др. языках. Помните, что иероглифы нужно конвертировать в понятный язык для хрефера. Для этого используйте утилиту ботмастера: http://www.botmasterru.com/utf_to_html/.
В папке "Words" создайте текстовый файл и добавьте в него список своих слов для парсинга. Чем больше будет слов, тем больше сайтов вы напарсите. Отрывок из используемой мною базы:
洗澡
stoneif
香肠
андрею
中国
法制
ascertaining
abusive
代理
mortaring
predictable
avoided
глянцевом
歌手
土地
钢铁
传送
right
Я обучил Хрефер парсить 2 поисковые системы без прокси: Searchatlas.centrum.cz и Km.ru. Добавьте следующие данные в файл engines.ini:
[SearchatlasCentrum]
Hostname=http://searchatlas.centrum.cz
Query=?q=[QUERY]
LinksMask=<div class="entry-wrap">[...]<a href="[LINK]">
TotalPages=100
NextPage=<li class="pageArrow nextPage"><a href="[LINK]">
NextPage2=<li class="pageArrow nextPage"><a href="[LINK]">
CaptchaURL=
CaptchaImage=
CaptchaField=
[Km]
Hostname=http://www.google.ru
Query=custom?q=[QUERY]&hl=ru&newwindow=1&client=pub-6204558141800493&cof=FORID:11%3BGL:1%3BLBGC:336699%3BLC:%230000ff%3BVLC:%23663399%3BGFNT:%230000ff%3BGIMP:%230000ff%3BDIV:%23F4F4F4%3B&channel=9859602781&prmd=ivns&ei=0ro8Ud6yO6b24QTy2oF4&sa=N
LinksMask=<h2 class="r">[...] class="l" href="[LINK]" onmousedown
TotalPages=100
NextPage=<td nowrap class="b"><a href="[LINK]">
NextPage2=<td nowrap class="b"><a href="[LINK]">
CaptchaURL=
CaptchaImage=
CaptchaField=
А теперь я расшифрую содержание файла engines.ini поподробнее:
Hostname - домен системы, которую будем парсить.
Query - кусок ссылки с поисковым запросом ([QUERY]) после Hostname.
LinksMask – границы парсинга сайтов ([LINK]) из выдачи поисковой системы.
TotalPages - количество страниц поисковой системы, которые будем парсить.
NextPage, NextPage2 - границы парсинга навигации [LINK] поисковой системы.
А теперь немного о том как я нашел такие системы. Идем в google.com, вводим запрос типа: "searchatlas.centrum.cz/?q=" (с ковычками). Гуляем по выдаче гугла и натыкаемся на подобные поисковые системы. Таким образом я нашел 2 неизвестные мне поисковые системы: search.seznam.cz и ricerca.virgilio.it (еще мне встретились уже известные системы: яндекс, рамблер, региональные гуглы и др. ). Затем по аналогии вводим в google запрос типа: "search.seznam.cz/?q=" и "ricerca.virgilio.it/ricerca?qs=" поочередно. Гуляем по выдаче и находим еще поисковые системы: ansearch.com.au, search.lycos.ch, fr.search-results.com, search.conduit.com, isearch.avg.com, start.facemoods.comhome.mywebsearch.com и др. И так дальше по аналогии. Таким образом вы за несколько минут может насобирать до 100 таких поисковых систем.
А в случае с новостным порталом km.ru дела обстоят очень интересно. Многие наверное встречали сайты со встроенным поиском от Гугла. А может быть кто-то и устанавливал его к себе на сайт. Сделать это можно двумя способами: с помощью системы Google Adsense или с помощью системы Пользовательского поиска Google. Так вот на сайте km.ru одна из таких систем внедрена. Заходим на сайт km.ru, вводим любой поисковый запрос, выбираем "Интернет" и нажимаем кнопку "Поиск". Спускаемся вниз страницы, кликаем правой кнопкой мыши по ссылке "Следующая" и открываем ссылку в новом окне браузера.
Вуаля! Перед нами выдача Google. Стоит учитывать что прокрутки на странице нету, поэтому нужно выделить текст мышкой и тянуть ее вниз, чтобы увидеть навигацию по страницам Google.
Я описал два способа поиска подобных систем, остается только обучить хрефер таким системам.
Ну а теперь открываем хрефер и переходим к его настройке.
Настройка Хрефера:
1) Parsing Option
В блоке Link Processing можете поставть галочку напротив "Convert all links to index", но для этого вам придется скопировать файл MakeToIndex.ini из корня папки программы Xrumer в корень папки программы Hrefer, т.к. этот файл у Хрефера давно не обновлялся.Также можете поставить галочку напротив "Log founded hight-PR freehostings into the FreeBonus.txt", чтобы программа сохранила найденные фрихостинги-бонусники, где можно разместить свои будующие дорвеи.
В блоке Duplicates filtering поставьте галочку напротив "Enable filtering of duplicated links by hostnames".
В блоке Duplicates filtering method выберите "By hostnames".
В блоке Query ordering выберите "Words + Additive Words".
В блоке Multi-SE parsing method выберите "New query for each search engine".
2) Снимите галочки напротив "Use proxy", "Auto-refresh, delay (min.)" и "Randomize datacenters".
Далее во вкладке MultiThreading в блоке Multithreading options установите количество потоков напротив "Parser max. threads count", а в блоке Antiban options снимите галочку напротив "Add this pause between threads starting". Во вкладке Search Engines options & Filter в блоке Search engines options напротив "SE" выберите 2 поисковые системы: SearchatlasCentrum и Km, а напротив "Sieve-filter": discuz. Во вкладке Words database из выпадающего списка выберите файл со списком своих слов для парсинга. Потом напротив "Links file" напишите название будующего файла с ссылками. Все! Можно стартовать!
Парсинг моей приложенной базы производился в 50 потоков, с использованием базы слов в количестве 10000.
Как видно на скриншоте после 1 часа 8 минут парсинга Хрефер обработал 6407 слов и собрал 6986 форумов, под фильтр попали 3424 сайта, дублей 656184. Основную часть форумов напарсили с системы KM (62%). К статье прикладываю архив с нужными файлами и собранной базой. В архиве файлы: discuz.txt, discuz_addwords.txt, engines.ini, LinksList id7.txt и WordsDatabase1.txt. Не знаю насколько долго хватит этих тем для сбора баз без денежных и психических затрат после опубликования статьи, но я использую эти фичи уже много лет. Всем Спасибо!