Как сделать парсинг групп в google. Парсер google-выдачи, бесплатный. Улучшенная генерация отчётов
Этот парсер прост, как трусы по рубль двадцать. И это не только про его возможности (они кстати скромные, ни поддержки прокси, ни антикапчи), а и про интерфейс тоже.
Но на всякий случай расскажу что и куда клацать, чтобы было хорошо:)
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 - Выпадающий список для управления парсингом - старт, стоп, пауза и продолжить. Содержание списка меняется в зависимости от выполняемой задачи, чтобы отображать только доступные задачи.
- Количество результатов по запросу
- Ссылки, анкоры и сниппеты из выдачи
- Список связанных ключевых слов(Related keywords)
- Определяет посчитал ли Google запрос опечаткой или нет
- Парсит из рекламных блоков ссылку, анкор и сниппет. Следует обратить внимание, что в переменную $link будут попадать ссылки, которые имеют вид для получения ссылок которые мы видим при выдаче под анкорами, нужно использовать переменную $visiblelink. Это касается только блока рекламы.
Возможности(top)
- Поддержка всех поисковых операторов Гугла(site:, inurl: и т.д.)
- Парсит максимальное отдаваемое гуглом число результатов - 10 страниц по 100 элементов в выдачи
- Может автоматически парсить больше 1000 результатов на запрос - подставляет дополнительные символы(опция Parse all results)
- Возможность поиска связанных ключевых слов
- Поддерживает выбор страны поиска, города, региона, домена, языка результатов
- Поддерживает указание времени выдачи
- Возможность парсить по новостям и блогам
- Можно указать парсить ли выдачу если гугл сообщает о том что по указанному запросу ничего не найдено и предлагает результаты по схожему запросу
- Поддерживает отключение фильтра гугла по скрытию похожих результатов(filter=)
- Возможность выбора языка интерфейса Google, выдача результатов в парсере и в браузере, при идентичных настройках, максимально идентична
- Сбор баз ссылок - для A-Poster, XRumer, AllSubmitter и т.д.
- Оценка конкуренции для кейвордов
- Поиск беклинков(упоминаний) сайтов
- Проверка индексации сайтов
- Поиск уязвимых сайтов
- Любые другие варианты подразумевающие парсинг гугла в том или ином виде
- В качестве запросов необходимо указывать поисковые фразы, точно так же как если бы их вводили прямо в форму поиска Гугла, например:
окна Москва
site:http://lenta.ru
inurl:guestbook
Нажмите, чтобы раскрыть...
Результаты(top)- В результате отображен список ссылок по запросам:
http://lenta.ru/
http://vesti.lenta.ru/
http://old.lenta.ru/
http://1991.lenta.ru/
http://vip.lenta.ru/
http://pda.lenta.ru/
http://3m.lenta.ru/
http://lm-3.lenta.ru/
http://aquarium.lenta.ru/magazine/
http://real.lenta.ru/
http://megafon.lenta.ru/
http://okna-rassvet.ru/
http://www.montblanc.ru/
http://www.probkiizokna.ru/
http://www.panorama-group.ru/
http://www.oknadoz.ru/
http://www.okna-darom.ru/
http://www.oknarosta.ru/
...
Нажмите, чтобы раскрыть...
Возможные настройки(top)Links per page | 100 | Количество ссылок в выдачи на каждую страницу |
Pages count | 5 | Количество страниц для парсинга |
Google domain | www.google.com | Домен Гугла для парсинга, поддерживаются все домены |
Results language | Any language | Выбор языка результатов(параметр lr=) |
Search from country | Global | Выбор страны откуда осуществляется поиск(гео-зависимый поиск, параметр gl=) |
Location (city) | - | Поиск по городу, региону. Можно указывать города в виде novosibirsk, russia; полный список локаций можно найти по ссылке . Также необходимо выставлять корректный домен гугла |
Hide omitted results | ☑ | Определяет скрывать ли опущенные результаты(параметр filter=) |
Serp time | All time | Время серпа(временно-зависимый поиск, параметр tbs=) |
Serp type | Main | Определяет парсить с главной страницы, по новостям или блогам |
Parse not found | ☑ | Определяет парсить ли выдачу если Гугл сообщил что по указанному запросу ничего не найдено и предложил выдачу по другому запросу |
Use AntiGate | ☐ | Определяет использовать ли antigate для обхода каптч |
AntiGate preset | default | Пресет парсера Util:AntiGate. Необходимо предварительно настроить парсер Util::AntiGate - указать свой ключ доступа и другие параметры, после чего выбрать созданный пресет здесь |
Use digit captcha | ☐ | Включает принудительное использование цифровой каптчи |
Use sessions | ☐ | Cохраняет хорошие сессии что позволяет парсить еще быстрее, получая меньшее число ошибок. |
Interface language | English | Возможность выбора языка интерфейса Google, для максимальной идентичности результатов в парсере и в браузере |
Все сталкивались с ситуацией, когда нужно собрать и систематизировать большое количество информации. Для стандартных задач по SEO-оптимизации сайта есть готовые сервисы , например, Netpeak Checker — для сравнения показателей конкурирующих сайтов или Netpeak Spider — для парсинга внутренней информации по сайту. Но что, если задача нетривиальна и готовых решений нет? Есть два пути: делать все руками и долго, или загнать рутинный процесс в матрицу, автоматизировать его и получать результат в разы быстрее. О таком кейсе и пойдет речь.
Что такое парсинг сайтов и зачем он нужен Kimono — мощный и быстрый в настройке скрейпер с интуитивно понятным интерфейсом. Позволяет парсить данные с других сайтов и позже обновлять их. Бесплатный.Познакомиться поближе и получить краткий мануал об использовании можно (на русском) или на moz.com (на английском). Давайте попробуем спарсить что-нибудь хорошее с помощью Kimono. Например, дополним созданную нами таблицу с городами списком курортов в стране Города 2. Как это можно реализовать при помощи Kimono Labs. Нам понадобятся:
- приложение для Google Chrome — Kimono;
- таблица Google Docs.
1. Находим сайт с необходимой нам информацией — то есть перечнем стран и их курортов. Открываем страницу, откуда необходимо получить данные.
2. Кликаем на иконку Kimono в правом верхнем углу Chrome.
3. Выделяем те части страницы, данные из которых нам необходимо спарсить. Если нужно выделить новый тип данных на той же странице, кликаем на «+» справа от «property 1 » — так указываем Kimono, что эти данные нужно разместить в новом столбце.
4. Кликнув на фигурные скобки и выбрав «CSV », можно увидеть, как выбранные данные будут располагаться в таблице.
5. Когда все данные отмечены:
- кликаем «Done » (в правом верхнем углу);
- логинимся в Kimono, чтобы привязать API к своему аккаунту;
- вводим название будущего АРI;
- кликаем «Create API ».
6. Когда API создано, переходим в таблицу Google, куда хотим загрузить выбранные данные. Выбираем «Connect to Kimono » и кликаем на название нашего API — «Resorts ». Список стран и ссылок на страницы с курортными городами выгружается на отдельный лист.
7. Переходим снова на сайт, берем для примера Ирландию, и снова выбираем через Kimono города, которые необходимо спарсить. Создаем API, называем его «Resorts in countries
».
9. В «Crawl Strategy
» выбираем «URLs from source API
». Появляется поле с выпадающим списком всех API. Выбираем созданное нами ранее API «Resorts
» и из него автоматически загружается список URL для парсинга. Кликаем синюю кнопку «Start Crawl
» (начать обход) и следим за статусом парсинга. Kimono обходит страницы, парсит данные по заданному ранее шаблону и добавляет их в таблицу — то есть делает все то же самое, что и для Ирландии, но уже для всех других стран, что ввели автоматически и без нашего участия.
10. Когда таблица сформирована, синхронизируем Kimono Labs с таблицей Google — точно так же, как делали это в шестом пункте. В результате, в таблице появляется второй лист с данными.
Предположим, хотим, чтобы в таблице отображались все курортные города в стране города прибытия. Данные на листах Kimono обрабатываем с помощью формул для таблиц Google, и выводим в строку список городов, где еще можно отдохнуть в Австралии, кроме Сиднея.
Например, это можно сделать так . Разметить массив данных (список городов), используя логические функции и возвращая значение ячейке, равное TRUE или FALSE. На примере ниже выделили для себя города, которые находятся именно в Австралии:
- TRUE = город находится в Австралии;
- FALSE = город находится в другой стране.
По меткам TRUE определяем начало и конец обрабатываемого диапазона, и выводим в строку соответствующие этому диапазону города.
По аналогии можем вывести курортные города и для других стран.
Мы специально привели здесь достаточно простой и пошаговый пример — формулу можно усложнить, например, сделать так, чтобы достаточно было ввести страну в колонку С, а все остальные вычисления и вывод городов в строку происходили автоматически.
Результаты автоматизацииКак говорилось вначале, нам регулярно нужно составлять по 20 однотипных таблиц. Это рутинный процесс, съедающий по 40-50 минут на одну таблицу, и по 16 часов времени на каждые 20 шт. Согласитесь, 2 рабочих дня на одинаковые таблички — необоснованная трата времени. После автоматизации на одну таблицу уходит 5-10 минут, а на 20 — около 2 часов. Таблица имеет 17 ячеек, парсинг производится из 5 источников. Заполнение таблицы происходит автоматически при заполнении всего 2 ячеек с исходными данными.
Настройка и автоматизация парсинга суммарно заняла 30 часов времени, то есть потраченное время «окупится» уже на этапе генерации второй 20-ки таблиц.
Ни для кого из вас не секрет, что для продвижения сайтов нужны ссылки и желательно много и бесплатно. Где же их взять? Существует сайты, которые получают контент благодаря пользователям. Например, каталоги сайтов, статей и компаний. Базой называется собрание адресов таких сайтов.
Вне зависимости от того, какую базу вы собираете, можно найти сайты по соответствующим запросам в поисковых системах. Этот процесс называется парсингом выдачи
. Обычно парсится 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 найденных сайтов.
Программа избавляет от большей части рутинной работы и парсит намного быстрее человека.
Когда что-то делаешь промышленно, после кучи запросов с одного 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, а описанным выше я такого проделать не смог.