Парсинг 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 - Выпадающий список для управления парсингом - старт, стоп, пауза и продолжить. Содержание списка меняется в зависимости от выполняемой задачи, чтобы отображать только доступные задачи.

Ни для кого из вас не секрет, что для продвижения сайтов нужны ссылки и желательно много и бесплатно. Где же их взять? Существует сайты, которые получают контент благодаря пользователям. Например, каталоги сайтов, статей и компаний. Базой называется собрание адресов таких сайтов.
Вне зависимости от того, какую базу вы собираете, можно найти сайты по соответствующим запросам в поисковых системах. Этот процесс называется парсингом выдачи . Обычно парсится 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 найденных сайтов.
Программа избавляет от большей части рутинной работы и парсит намного быстрее человека.

  • Количество результатов по запросу
  • Ссылки, анкоры и сниппеты из выдачи
  • Список связанных ключевых слов(Related keywords)
  • Определяет посчитал ли Google запрос опечаткой или нет
  • Парсит из рекламных блоков ссылку, анкор и сниппет. Следует обратить внимание, что в переменную $link будут попадать ссылки, которые имеют вид для получения ссылок которые мы видим при выдаче под анкорами, нужно использовать переменную $visiblelink. Это касается только блока рекламы.



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

  • Поддержка всех поисковых операторов Гугла(site:, inurl: и т.д.)
  • Парсит максимальное отдаваемое гуглом число результатов - 10 страниц по 100 элементов в выдачи
  • Может автоматически парсить больше 1000 результатов на запрос - подставляет дополнительные символы(опция Parse all results)
  • Возможность поиска связанных ключевых слов
  • Поддерживает выбор страны поиска, города, региона, домена, языка результатов
  • Поддерживает указание времени выдачи
  • Возможность парсить по новостям и блогам
  • Можно указать парсить ли выдачу если гугл сообщает о том что по указанному запросу ничего не найдено и предлагает результаты по схожему запросу
  • Поддерживает отключение фильтра гугла по скрытию похожих результатов(filter=)
  • Возможность выбора языка интерфейса Google, выдача результатов в парсере и в браузере, при идентичных настройках, максимально идентична

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

  • Сбор баз ссылок - для A-Poster, XRumer, AllSubmitter и т.д.
  • Оценка конкуренции для кейвордов
  • Поиск беклинков(упоминаний) сайтов
  • Проверка индексации сайтов
  • Поиск уязвимых сайтов
  • Любые другие варианты подразумевающие парсинг гугла в том или ином виде

Примеры(top)

Запросы(top)

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

окна Москва
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, для максимальной идентичности результатов в парсере и в браузере

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

Задачи сбора информации не так уж редки, как кажется. Бывает нужно получить какую-нибудь статистику по разделам/темам/рубрикам на сайте, доступа к админке которого у нас нет, либо собрать данные о фирмах в каталоге, где все эти данные разбросаны по страницам, и если делать это руками, то уйдет не один день. Для автоматизации такой задачи можно воспользоваться скриптами в Google таблицах.

Чтобы работать с таблицей, нужно использовать класс SpreadsheetApp , который позволяет довольно удобно обращаться с таблицей. Для работы с активным листом мы используем функцию getActiveSheet() , в данном интерфейсе.
Все оперирование внутри листа возможно только внутри диапазонов. Даже если вам нужно будет работать с какой-то конкретной ячейкой, для нее сначала нужно задать диапазон. В выбранном листе задать диапазон можно методом getRange("A1:B2") . Аргументом этого метода можно передать строку, содержащую диапазон ячеек в привычной нам из Excel виде. Внутри заданного диапазона выбор ячейки осуществляется методом getCell(row, col) , где row и col это номер строки и столбца ячейки внутри диапазона, соответственно.

Для получения веб страницы мы используем класс UrlFetchApp , у которого есть нужный для нас метод fetch(url) . Чтобы можно было работать с результатом работы этого метода, нужно привести его к виду текста, с помощью функции getContentText() . После выполнения этой функции в переменной будет сохранен исходный код страницы, с которым можно работать так, как вам хочется. В принципе, никто не запрещает построить по полученной странице DOM дерево и работать с ним, но, как мне кажется, работа со строкой в небольших задачах, где можно в тексте вычленить нужные данные будет проще и быстрее.

Код скрипта для Google Spreadsheet

JavaScript

function getConten(){ for(var j = 1; j < 19; j++){ getPageContent(1 + 10*(j-1), "https://сайт/cms/page/" + j + "/"); } } function getPageContent(startRow, url) { var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getRange("A1:B181"); var cell = range.getCell(startRow,1); var response = UrlFetchApp.fetch(url); var textResp = response.getContentText(); var start, end, name; var i; for(i = 0; i < 10; i++){ start = textResp.indexOf("

", end) + 15; start = textResp.indexOf(">", start) + 1; end = textResp.indexOf("", start); name = textResp.substring(start, end); cell.setValue(name); cell = cell.offset(1,0); } }

function getConten () {

for (var j = 1 ; j < 19 ; j ++ ) {

getPageContent (1 + 10 * (j - 1 ) , "https://сайт/cms/page/" + j + "/" ) ;

function getPageContent (startRow , url ) {

var sheet = SpreadsheetApp . getActiveSheet () ;

var range = sheet . getRange ("A1:B181" ) ;

var cell = range . getCell (startRow , 1 ) ;

var response = UrlFetchApp . fetch (url ) ;

var textResp = response . getContentText () ;

var start , end , name ;

var i ;

for (i = 0 ; i < 10 ; i ++ ) {

start = textResp . indexOf ("

" , end ) + 15 ;

Все сталкивались с ситуацией, когда нужно собрать и систематизировать большое количество информации. Для стандартных задач по 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-ки таблиц.







2024 © gtavrl.ru.