Бессерверный парсер выдачи Google на Javascript. Бесплатный парсер поисковой выдачи Google — Google SERP Parser

Бессерверный парсер выдачи Google на Javascript. Бесплатный парсер поисковой выдачи Google — Google SERP Parser

04.05.2019

Этот парсер прост, как трусы по рубль двадцать. И это не только про его возможности (они кстати скромные, ни поддержки прокси, ни антикапчи), а и про интерфейс тоже.

Но на всякий случай расскажу что и куда клацать, чтобы было хорошо:)


1 - Запросы к ПС, построчно. Русские символы вводите как есть, программа сама сделает urlencode. Клик правой кнопкой мыши откроет меню с парой плюшек.

2 - Кликните, чтобы к каждому запросу добавить site:TLD, где список этих самых TLD находится в файле zones.txt.

Нафиг это нужно? Все очень просто, сравним запрос "google parser" с запросом "google parser site:ru"
В первом случае поисковая выдача будет содержать все найденные сайты, а во втором только сайты в зоне ru.
Это полезно, если требуется получить более 1000 результатов. В идеале, для каждой доменной зоны можно получить по 1000 ссылок.
Например , по запросы "парсер google " мы получили только 1000 ссылок.
А если кликнуть "site:TLD", то сможем получить до 11000 ссылок:

3 - Файл, в который будут сохранены найденные ссылки. Если указанный файл существует, то он будет просто дополнен, а не перезаписан.

4 - Файл, в который будут сохранены найденные домены . Если указанный файл существует, то он будет просто дополнен, а не перезаписан.

5 - Интервал задержек между запросами. Лучше не торопить события и выставив что-то между 20-30, пойти сделать себе чай, бутерброд с колбасой и почитать новости, пока программа будет работать:)

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

И так для начала нам нужно определиться что мы хотим парсить. Гесты, форумы, определнные CMSки, борды и пр. У всех у них есть определенные отличительные признаки, по которым с помощью операторов Гугла можно найти их в индексе. Сегодня хочу показать вам пример парсинга сайтов на DLE.
Нам понадобиться:
- Пасрес Байрона (Hkey free C++ Google parser) parser.rar (cкачиваний: 79)
-

В аттаче.txt файлом zones.zip (cкачиваний: 51)
- И программа Befouler (строкоизвращатель) befouler.zip (cкачиваний: 64) Внимание! Требует наличия в системной директории Windows библиотеки msvbvm50.dll,
скачать dll можно по ссылке: http://www.filesearch.ru/cgi-bin/s?query=msvbvm50.dll
Думаю ни для кого не секрет, что независимо от того стоит-ли на сайте ЧПУ или нет, DLE можно найти в 99% случаев по форме регистрации.
index.php?do=register

На данный момент гугл мне выдает, что результатов 344 000. Неплохо. Но вся проблема в том, что он показывает только первые 200 результатов. Для того, чтобы спарсить максимальное количество сайтов нужно будет немного подумать и применить некоторые операторы Гугла:
inurl:
Это значит, что будут найдены сайты, вернее страницы, в адресе которых находится указанные нами символы.
site:
Ищет ключевое слово исключительно на страницах указанного сайта или доменной зоны.
intitle:
Ищет страницы, в теге Title которых используется ключевое слово или фраза

Для этого берем наш строкоизвращатель и делаем следующее: (все картинки кликабельны)

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

inurl:"index.php?do=register" site:.

Нажимаем старт и в правом окошке у нас получается исходный код. Копируем его и сохраняем где нам удобно.

Теперь с помощью данных запросов мы сможем увидеть все DLE сайты в каждой указанной нами доменной зоне. Тем самым мы сможем спарсить большее количество сайтов, но их все-равно окажеться мало. Опять-же только в зоне.ru гугл выдает 104 000 сайтов. Для этого нам поможет очередной оператор, это

Позволяет искать сайты, с указанным словом в заголовке страницы. Как нам подобрать эти слова? Можем например воспользоваться списком Пастухова:

или-же самому написать нужнее слова.

ТОП 1000 в.txt фармате, почищен от п0рн0

top-1000.zip (cкачиваний: 21)

Берем наш файл с ТОП 1000, выбираем пункт "вставить в начало каждой строки" и в "исхондной подстроке" пишем: inurl:"index.php?do=register" site:.ru intitle:"

Далее сохраняем то, что у нас получилось справа, снова открываем его в строкоизвращателе, выбираем пункт "добавить в кажду строку" и добавляем кавычки (") (естественно без скобок). Все, у нас получилось почти 1000 поисковых запросов к Гуглу в зоне.ru, которые помогут нам отобрать максимальное количество сайтов на ДЛЕ из выдачи. По каждому запросу в выдаче от 5 до 50 сайтов, а запросов у нас 1000! Далее просто перебираем через блокнот путем замены самые популярные зоны: .com, .info, .biz, .net Лично я больше не стал брать, думаю этого хватит.

(правка - заменить)

Думаю из скриншота все понятно.

Теперь открываем наш парсер, загружаем для начала наш файл со словами и начинаем парсить. Обязательно поставьте задержку в 11-13 сек (13000) Это поможет вам избавиться от постоянной капчи, но даже если она у вас появляется, в программке есть минибраузер, где вы сможете ввести код капчи и спокойно продолжить парсинг.

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

Способо показан для одного движка, но так можно сделать практически с каждым, главное найти общие признаки у CMS

В процессе оптимизации сайта очень часто возникает необходимость проанализировать имеющиеся в индексе поисковых систем страницы. Чтобы не парсить выдачу Яндекса или Google вручную, можно использовать программу ComparseR. В данном материале я рассмотрю две практические задачи в которых мне совсем недавно пригодился данный софт, и в которых, естественно, он может пригодиться владельцам сайтов и оптимизаторам:

  • Удаление битых страниц, которые попали в индекс после выгрузки из 1С с ошибочными символьными кодами разделов и товаров;
  • Составление карты редиректов при объединении разделов сайта.
  • Удаление битых страниц после некорректной выгрузки из 1С

    Один из клиентов, заказавших продвижение сайта , в процессе работ по оптимизации продолжал доработку выгрузки товаров из 1С. В связи с этим при каждой выгрузке каталога менялись символьные коды элементов. К ним добавлялась частица «_1», «_2» и т.д. При этом каждая выгрузка успевала частично проиндексироваться.

    Итог: мы получили в индексе около 4 000 страниц, 3 600 из которых оказались битыми и отдавали 404 ошибку.

    Ни для кого далеко не секрет, что в Яндекс и Google существует ограничение на парсинг выдачи в 1 000 элементов. Здесь мы сталкиваемся с первой проблемой: как спарсить 4 000 страниц при ограничении в 1000? Именно в этом случае на помощь и приходит ComparseR.

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

    Делается это как раз из-за ограничения в 1000 страниц парсинга выдачи. В случае с построением дерева ComparseR сможет обойти данный лимит при помощи запросов к поиску по каждому разделу сайта отдельно. Для этого запустим парсинг с помощью метода перебора с минимальным количеством запросов. В моем случае приходилось делать запуск раза 4, прежде чем были собраны все страницы, находящиеся в индексе.


    Отправляем все несуществующие страницы на удаление с помощью функции «Добавить/Удалить URL» и оставляем сайт индексироваться.

    Составление карты редиректов при объединении разделов сайта

    У интернет-магазина были разные разделы для розничных и корпоративных клиентов. При этом ассортимент их пересекался примерно на 40%, а оставшиеся 60% товаров корп. раздела вполне могли пригодиться и розничным покупателям. Было решено объединить их, и, чтобы не потерять аудиторию из поиска, которая шла на корпоративный раздел, настроить 301 редиректы.

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

    Естественно, количество покупок резко сократилось, так как люди попадали из поиска на 404 страницу, а программисты не могли ничего сделать, так как сопоставлять в корпоративном разделе с розничным было уже нечего.

    Благо, ComparseR после версии 1.0.77 научился делать произвольные запросы к выдаче. Именно это нас и спасло. Страниц товаров в корпоративном разделе было проиндексировало около 1 800, корректной структуры, чтобы построить дерево, также не осталось из-за удаления корпоративного каталога. Пришлось взять страницу раздела из кэша Яндекса и вручную скопировать все урлы его подразделов.

    После этого отправляем произвольные запросы по очереди к обеим поисковым системам:


    Результатом будет полученный список страниц, которые проиндексированы в поисковых системах. Выгружаем в excel. Изначально сделали скрипт, который сопоставлял товары по символьным кодам, но, к сожалению, оказалось, что символьные коды некоторых элементов были изменены, а вот наименования остались прежними. Разбираем title на куски, убрав из него шаблонные элементы.

    Результатом стал готовый список наименований товаров, по которому программисты уже вытащили корректные url перемещенных в розничный раздел элементов и сопоставили их со списком спарсеyных страниц. Задача решена.

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

    На сервере у нас один IP. Можно докупить еще, но зачем? У нас же еще есть IP"шки клиентов, которые к нам заходят.
    Сервер - машинка слабая (в сравнении с клиентскими компами), а брать мощный сервер дорого. Почему бы не использовать мощность зашедшего посетителя, у него в разы больше памяти и вообще...

    Можно пилить не на серверном php, а на браузерном JS. Сие значит - все будет происходить по большей части в браузерах, а не на сервере. Так, сервис сможет работать даже на нищебродском бесплатном хостинге. Памяти хватит на любое количество потоков (свою память мы почти не тратим), да и капчи будут лезть для каждого клиента индивидуально (в зависимости от аппетита с его IP).

    Сначала я попробовал подгружать гуглю через iframe - не получилось (в заголовках ответа сервера такое запрещено). Только в древнем IntrenetExplorer6 так можно - он не поддерживает запрета (но IE6 это древний ненужный недобраузер).

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

    Вот кусок кода оттуда с моими русифицированными комментами
    Код:



    google.load("search","1") //гловское загрузить (поиск, 1 версии)

    //все внути функции (назвать можно как хочется)
    function i_want_find(){ //я обозвал "найти все что я хочу"
    var searchControl=new google.search.SearchControl(); //создаем новый контроль поиска

    //искать в регионе (задается ниже по коду)
    var localSearch = new google.search.LocalSearch();
    searchControl.addSearcher(localSearch);

    //поиски (какие хотим) - ненужное убрать
    searchControl.addSearcher(new google.search.WebSearch()); //обычный такой поиск в гугле
    searchControl.addSearcher(new google.search.VideoSearch()); //искать видяхи
    searchControl.addSearcher(new google.search.BlogSearch()); //рыться в блогах
    searchControl.addSearcher(new google.search.NewsSearch()); //найти повод для полит-срача в новостях
    searchControl.addSearcher(new google.search.ImageSearch()); //поиск картиночек
    searchControl.addSearcher(new google.search.BookSearch()); //книжки можно найти
    searchControl.addSearcher(new google.search.PatentSearch()); //поиск патентов (даже их)

    //задаем регион поиска для "искать в регионе" (смотри выше где используется)
    localSearch.setCenterPoint("New York, NY");

    //куда надо выводить результаты (я выведу в div с id="vihlop")
    searchControl.draw(document.getElementById("vihlop"));

    //повеливаю исполнить запрос и найти наше RuSeo
    searchControl.execute("сайт");
    }

    Google.setOnLoadCallback(i_want_find); //каллбэк длинной функции описанной выше

    Дальше можно крамсать используя селекторы jQuery, а потом слать результаты на наш сервер.
    Сохранять итоги проделанного парсинга будем у нас на сервере (чтобы хитропопый юзер не догадался скопипастить себе JS и пользоваться им без нашего сервиса).

    Яндекс такого не дает.

    Или я плохо искал. Есть конечно но там требуется рега и получение ключа для своего IP. Или заставлять юзеров получать ключи, или реализовывать на своем сервере.
    Во втором случае плохо все: от того что нам понадобится сервер помощнее, до ограничения яндексом количества запросов (за расширение просят платить).
    Короче, яндекс опять отстой.

    У кого есть идеи "что парсить будем"? Я вообще искал технологию чтобы кэш гугла открывать без php, а описанным выше я такого проделать не смог.

    Ни для кого из вас не секрет, что для продвижения сайтов нужны ссылки и желательно много и бесплатно. Где же их взять? Существует сайты, которые получают контент благодаря пользователям. Например, каталоги сайтов, статей и компаний. Базой называется собрание адресов таких сайтов.
    Вне зависимости от того, какую базу вы собираете, можно найти сайты по соответствующим запросам в поисковых системах. Этот процесс называется парсингом выдачи . Обычно парсится Google и на это есть три причины:
    1.Хорошее качество поиска
    2.Высокая скорость ответа
    3.Наличие оператора inurl :
    Этот оператор имеет следующий вид inurl:«содержание url искомых страниц ». С помощью этого оператора можно искать конкретные движки сайтов. В Яндексе нет аналогов этому оператору.

    Например, чтобы найти большую часть каталогов Made-Cat нужно в поисковой строке Google ввести запрос: inurl:"ext/rules" или inurl:"add/1" .

    Правда, с использованием этого оператора нужно знать несколько моментов. Первое - для Google большинство спецсимволов - то же самое, что и пробел. Это плохо потому, что некоторые движки будут парситься с огромным количеством мусора. Например, в выдаче по запросу inurl:«xxx/yyy» можно встретить как страницы, содержащие «xxx?yyy», так и страницы, содержащие «xxx.yyy».
    Второе - для многих запросов поисковик при использовании этого оператора показывает не всю выдачу как раз для того, чтобы ограничить дорвейщиков.
    Иногда я запрос с оператором inurl заменяю запросом в виде -intext:"XXX" -intitle:"XXX" "XXX". Другими словами, мы говорим Google искать XXX, но не в тексте и не в заголовке, а кроме этого есть только URL. Правда, такая замена не равнозначна: если искомый XXX есть в заголовке или в тексте и одновременно в URL, то такая страница показана не будет.

    При парсинге есть обычно две задачи:
    1. Напарсить как можно больше URL.
    2. Захватив при этом как можно меньше мусора - страниц, которые нам не нужны.

    Для решения первой задачи используется следующим метод. Например, по запросу «XXX» выдается только 1000 сайтов, а в Интернете их, скажем, полмиллиона. Чтобы увеличить выдачу, добавим в к основному запросу(ам) «бесполезные» уточнения:
    «XXX» фирма
    «XXX» компания
    «XXX» найти
    «XXX» сайт
    «XXX» страница
    «XXX» главная
    В качестве уточнения берем общеупотребительные слова, которые могут встретиться на любом сайте. Хотя более полезно сайты разделять на непересекающиеся категории: только английский, только русский, только украинский. Либо добавлять поиск по зоне домена inurl:«.com», inurl:«.net»… Возьмем, например, запрос «каталог». Страниц в интернете с таким словом 209 000 000, но нам выдается не больше 1000. Используя шесть запросов
    1.Каталог inurl:«.com»
    2.Каталог inurl:«.net»
    3.Каталог inurl:«.biz»
    4.Каталог inurl:«.ru»
    5.Каталог inurl:«.info»
    6.Каталог inurl:«.org»
    Мы получим не 1000, а 6000 каталогов. Применив находчивость, можно получить несколько десятков тысяч URL. Но большинство будет мусором.

    Порой проблемы с мусором весьма существенные, потому приходится перед парсингом качество выдачи по каждому запросу проверять вручную, чтобы автомат не захватил много ненужных сайтов, а вы потом не мучились, проверяя их. Помогает нахождение «полезных» уточнений.
    Например, при запросе inurl:"add/1" можно наблюдать много мусора, этому нужно добавить уточнение inurl:"add/1" "URL вашего сайта" . Можно пойти дальше и отфильтровать «серые» каталоги «inurl:"add/1" "URL вашего сайта" -"URL где стоит ссылка"»

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

    Использование бесплатного десктопного парсера

    Программа не требует установки и поэтому пользоваться ей можно сразу после закачки.Работает программа только с Google и обладает спартанским интерфейсом, но, как говорится, «дареному коню в зубы не смотрят».

    1.Поле ввода запросов. Сюда нужно ввести список запросов к Google, например, inurl:«xxx» (обратите внимание на то, что оператор и запрос пишутся без пробела).
    2.Поле ввода-вывода URL запросов к Google. В этом поле будет появляться, какие URL Google парсятся при выполнении запросов. При желании можно самому сюда ввести список urls Google, которые нужно отпарсить. К примеру: «http://www.google.com.ua/search?hl=ru&q=XXX&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&meta=»
    3.Поле вывода результа – URL сайтов, которые нашлись.
    4.Процент выполненения задачи
    5.Фильтр на парсинг только русскоязычных сайтов
    6.Задержка в тысячных долях секунды. От 0 до 60 000. Задержка нужна, чтобы гугл не понял, что его парсит программа и не заблокировал вам доступ к ресурсам.
    7.Кнопка «Поехали» запускает парсинг.
    8.Показывает страницу, которая парситься в данный момент. Пользы особой нет, скорее для развлечения.

    Дополнительно над полем ввода запросов (1) есть кнопка «преобразовать», которая преобразует запросы inurl:«XXX» в -intext:"XXX" -intitle:"XXX" "XXX"

    Как пользоваться программой? Ввести в левое поле ввода(1) список запросов, подождать и копировать из правого поля ввода(3) результат. Потом отчистить дубли доменов, например, с помощью http://bajron.od.ua/?p=67. Реузльтаты хранятся в формате списка URL найденных сайтов.
    Программа избавляет от большей части рутинной работы и парсит намного быстрее человека.



    © 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows