Счётчик / парсер сайтов   Что это такое?   Почему наш парсер?   Возможности и ограничения Парсинг   Как запустить парсинг?   Дополнительные настройки     Извлечь ссылки     Фоновый парсинг     Обрезка html-тэгов     Включать поддомены     Игнорировать параметры запроса в URL     Исходная кодировка     Использовать куки       Где взять куки?   Обработка результатов     Пример результатов парсинга     Список возможных ошибок       #101: Возможно, дубликат страницы       #301: Неверно указан адрес сайта       #302: Неверно указаны некоторые ссылки       #303: Неверный формат имени куки       #304: Неверный формат значения куки       #305: Неверно указан email       #306: Повторяющиеся имена куки       #401: Не удалось загрузить страницу       #402: Файл не является html-файлом       #403: Размер файла превышает максимально допустимый       #404: Страница не найдена       #405: Произошла ошибка:...       #406: Не удалось распарсить страницу       #501: Неверный номер сессии, либо сессия повреждена       #502: Ожидаемый URL не найден       #503: Не удалось удалить, произошла ошибка       #504: Произошла ошибка запроса

Счётчик / парсер сайтов

Что это такое?

Парсер – это программа, преобразующая текстовые данные в структурированный формат. В данном случае – это программа, собирающая текстовую информацию с веб-страницы и подсчитывающая общий объём этой информации.

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

Почему наш парсер?

Задача парсинга встречается не только в области переводов, но и в SEO (наполнение сайта), а также при торговле на всевозможных биржах (постоянный мониторинг изменений курса). Поэтому в интернете уже давно существуют готовые решения в виде отдельных программных модулей или программ с пользовательским интерфейсом. Однако большинство из них неудобны в использовании для сферы переводов именно потому, что заточены под совершенно другие действия. Существующие парсеры ищут конкретную информацию на конкретном сайте, при этом должны заранее получить инструкции о том, какого рода информация должна быть найдена. Наш парсер собирает всю текстовую информацию с любого сайта без специальной предварительной подготовки.

Помимо описанных выше парсеров, существуют и счётчики сайтов, созданные специально для переводчиков. Они делают именно то, что нужно – подсчитывают объём текста на всём сайте. К сожалению, таких сервисов очень мало и работают они нестабильно. Кроме того, довольно часто они насчитывают лишнего, иногда в несколько раз преувеличивая реальные объёмы текста. Это происходит из-за ошибочного повторного посещения уже обработанных страниц и неспособности распознать дубликаты. Ещё один важный недостаток таких счётчиков – это просто счётчики. Они не могут предоставить сам текст каждой страницы. Поэтому, если переводчик и оценит объём работы верно, вытаскивать текст с каждой страницы в отдельный документ ему придётся вручную. Наш парсер лишён и этих недостатков.

Возможности и ограничения

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

  • Тэг title
  • Мета-тэг description
  • Значения атрибутов alt, title, value и placeholder

По сравнению с другими счётчиками, улучшен алгоритм обработки сайта, что позволяет получать адекватные оценки объёма текста, а именно:

  • Не проводится различий между протоколами http и https (http://site.com = https://site.com)
  • Игнорируется субдомен www (site.com = www.site.com)
  • Игнорируются элементы текста, которые не нуждаются в переводе, например числа и даты
  • Выполняется проверка на дублированный контент, при подозрении на дублирование выдается предупреждение

Следует понимать, что при локализации сайта всегда лучше работать со специально подготовленными языковыми файлами, парсер – это запасной вариант. Нужно принять во внимание следующие ограничения:

  • При обработке сайта, будут посчитаны только первые 500 страниц сайта
  • При обработке отдельных веб-страниц, можно обработать до 10 ссылок за раз
  • Подробный парсинг возможен только при обработке отдельных ссылок
  • Объём каждой обрабатываемой страницы не должен превышать 1 Мб

Эти ограничения вызваны возможностями сервера. Мы работаем над их расширением. Кроме того:

  • Не будет обработана информация, доступная только авторизованным пользователям (решается использованием куки-файлов)
  • Не будет обработана информация, отсутсвующая в изначальной html-разметке. Это любая информация, которая подгружается с помощью javascript из любых источников
  • Не будет обработана информация, которая отображается только после специфических действий пользователя, например, страница подтверждения регистрации, результаты выдачи по фильтру и подобное
  • Не будет обработана информация, не являющаяся непосредственно частью текста сайта. Например, тексты электронных писем, которые автоматически отправляются пользователям, документы, выложенные на сайте, и подобное

Некоторые из этих ограничений невозможно обойти программно.

Парсинг

Как запустить парсинг?

Наш парсер может обрабатывать как отдельные ссылки, так и сайты целиком.

Если Вы хотите посчитать количество символов на всём сайте, выберите вкладку "Сайт". В поле ввода укажите адрес сайта, например, http://example.com. Нажмите кнопку "Посчитать".

Если Вас интересуют только некоторые страницы сайта или страницы разных сайтов, выберите вкладку "Список ссылок". Здесь Вы можете указать до 10 ссылок, каждую с новой строки. Обратите внимание, что при обработке отдельных ссылок Вам доступны два варианта действия – подсчёт и парсинг. При нажатии кнопки "Посчитать" Вы получите короткий отчёт, содержащий информацию о количестве слов и символов на каждой странице из списка. При нажатии кнопки "Распарсить", помимо того же общего отчёта, Вы также получите таблицу со всем текстовым содержимым, структурированным в соответствии с html-разметкой, для каждой страницы из списка. Детальнее об этом смотрите в разделе Обработка результатов.

Дополнительные настройки

Эта функция доступна при обработке отдельных страниц. Часто ссылки для перевода подаются в виде нумерованного списка, либо вместе с дополнительными комментариями. Вместо того, чтобы удалять весь лишний текст вручную, просто вставьте его в поле ввода и нажмите кнопку "Извлечь ссылки". Весь лишний текст будет удалён автоматически, в поле останутся только ссылки, каждая с новой строки.

Фоновый парсинг

Если Вы установили этот флажок перед запуском парсинга, то результаты не будут выведены в браузер. Вместо этого отчёт придёт на почту, которую Вы укажете. Обратите внимание, что это может занять больше времени, чем парсинг в браузере, из-за задержек почтовых серверов. Если письмо с результатами не приходит слишком долго, проверьте папку "Спам". Если и там его нет, напишите в поддержку: support@inspector-cat.com.

Обрезка html-тэгов

Эта опция доступна только при парсинге. Она установлена по умолчанию для более компактного представления результатов. Обрезка предполагает, что для всех тэгов удаляются все атрибуты, кроме id, а также закрывающий тэг. Если по каким-то причинам Вам это не подходит, снимите этот флажок. В таком случае вся html-разметка в результатах парсинга будет представлена в неизменённом виде.

Включать поддомены

Эта опция доступна при подсчёте сайта. По умолчанию она отключена. В таком положении парсер будет игнорировать все внутренние ссылки сайта, ведущие на более глубокие поддомены. Например, при подсчёте сайта site.com ссылка news.site.com будет обработана только при установленой опции "включать поддомены". Обратите внимание, что эта опция действует только в одну сторону - на более глубокие поддомены. То есть, при подсчёте сайта news.site.com ссылка site.com не будет посещена в любом случае.

Игнорировать параметры запроса в URL

Эта опция доступна только при подсчёте сайта. Если она включена, то ссылки, ведущие на одну и ту же веб-страницу, но с разными параметрами, будут считаться одинаковыми.

Если на интересующем Вас сайте GET-параметры используются для выдачи контента, Вам следует отключить эту опцию. Например:

example.com/post?id=137
example.com/post?id=142

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

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

example.com/video/103?autoplay=on
example.com/video/103?autoplay=off

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

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

Исходная кодировка

Эта опция определяют исходную кодировку сайта или страниц, которые Вы пытаетесь распарсить. Если исходная кодировка будет определена неверно, Вы скорее всего получите правильные результаты подсчёта, но при парсинге весь текст веб-страницы может выглядеть примерно следующим образом:

Страница, которую Вы ищете, не найдена. Возможно, Вы неправиÐ"ьно ввеÐ"и URL иÐ"и воспоÐ"ьзоваÐ"ись нерабочей ссыÐ"кой.


Исходную кодировку можно определять по http-заголовкам, meta-тэгу charset или другими программными средствами. К сожалению, ни один из этих методов не даёт 100% гарантии правильного определения. В большинстве случаев автоматическое определение работает правильно, но если это не так, Вы можете выбрать нужную кодировку из предложенного списка. Если Вы владелец сайта и знаете, в какой он кодировке, просто выберите её из списка. Иначе Вам придётся немного поэкспериментировать. В таком случае советуем начать с наиболее часто используемых кодировок:

  • UTF-8
  • ASCII
  • ISO-8859-1 (и прочие ISO)
  • KOI8-R
  • Windows-1251 (и прочие Windows)

Различные сайты используют cookie-файлы для длительного хранения информации о пользователе. В частности, их используют для того, чтобы проводить быструю авторизацию. Если при авторизации на каком-то сайте Вы установили флажок "Запомнить меня", значит, при следующем посещении этого сайта Вы уже будете авторизованы и это реализовано именно с помощью cookie-файлов.

Используя cookie-файлы при парсинге, Вы можете обрабатывать контент сайта, доступный только авторизованным пользователям. Для этого установите флажок "Использовать куки" и введите все необходимые пары имя – значение.

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

Зайдите на сайт, который хотите парсить, и авторизуйтесь на нём. Откройте режим разработчика (клавиша F12). Выберите вкладку "Приложение", затем на боковой панели "Куки" и щёлкните по записи, соответствующей интересующему Вас сайту. Перед Вами появится таблица куки-файлов. Первый столбец – имя, второй – значение.

Просмотр куки через инсрументы разработчика Google Chrome

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

Кроме того, по некоторым именам куки можно догадаться, что они не имеют отношения к контенту или авторизации на сайте. Например, такие имена как last_visited или autoplay очевидно не должны повлиять на процесс парсинга. Но если Вы не уверены, какие из куки-файлов нужны, а какие нет, просто скопируйте их все.

Важно. Мы не сохраняем и никому не передаём данные о куки-файлах, использованных при парсинге. Однако мы не можем гарантировать их 100% защищённость. Не используйте куки, которые дают доступ к Вашей личной информации, управлению Вашими финансами или бизнесом. Рекомендуем создать для парсинга отдельный безопасный аккаунт.

Обработка результатов

В результате пoдсчёта Вы получите общий отчёт по всем посещённым ссылкам и подробный отчёт по каждой отдельной странице, если Вы выполняли парсинг, а не просто подсчёт. В общем отчёте указан полный объём документа в количестве слов, знаков с пробелами (ЗСП) и знаков без пробелов (ЗБП). Кроме того, в шапке отчёта также указано общее количество обработанных страниц, количество успешно обработанных страниц, предупреждений и ошибок. Нажимая на соответствующие ссылки, Вы можете переключаться между категориями. Это может облегчить Вашу работу, например, при проверке предупреждений.

Далее в общем отчёте представлена базовая информация о каждой отдельной странице. Указано количество слов, ЗБП и ЗСП, предупреждения или ошибки, если они возникли. Таким образом, если какие-то страницы оказались не значимы для Вас, Вы можете просто вычесть их показатели из общей суммы всего сайта.

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

  • Уровень – указывает глубину данного элемента в иерархии html-разметки. Считается, что тэг body имеет уровень 0. Каждый следующий вложенный элемент имеет на единицу больший уровень. Это поможет точно соотнести различные элементы между собой
  • Контейнер – html-тэг, содержимое которого представлено в данной строке таблицы. Помимо содержимого самих тэгов, обрабатывается также содержимое некоторых атрибутов. Название атрибута будет указано в круглых скобках сразу после названия тэга
  • Содержимое – внутренний текст и вложенные тэги данного тэга
  • Слов, ЗБП, ЗСП – соответствующие характеристики содержимого этой строки. При необходимости Вы можете вычесть эти параметры из общего счёта, если какие-то элементы окажутся незначимыми

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

Допустим, интересующая Вас веб-страница имеет следующий код:

<div id="result-example" class="someClass">
  <h3>Header</h3>
  <p>
    Some text in <i>paragraph</i>
  </p>
  <a href="#result-example" title="Example link">Example</a>
</div>

HTML-разметка, задаваемая этим кодом, будет выглядеть примерно следующим образом:

Header

Some text in paragraph

Example

А вот так будет выглядеть таблица с результатами парсинга:

Уровень Контейнер Содержимое Слов ЗБП ЗСП
0 <body> <div id="result-example"> 0 0 0
1 <div id="result-example"> <h3> <p> <a> 0 0 0
2 <h3> Header 1 6 6
2 <p> Some text in <i> 3 10 13
3 <i> paragraph 1 9 9
2 <a>(title) Example link 2 11 12
2 <a> Example 1 7 7

Обратите внимание, что в представленной таблице с результатами:

  • Число, указанное в столбце уровень, соответствует глубине элемента в html-разметке. У дочерних элементов оно всегда на единицу больше, чем у родительских
  • В столбце контейнер, а также в столбце содержимое тэги указаны без атрибутов (кроме id) и закрывающих тэгов. Это происходит потому, что включена опция обрезка тэгов
  • Сначала отображаются все дочерние элементы тэга, а потом его нижестоящие соседи. Поэтому в примере выше сначала идёт тэг <i> с уровнем 3 (родитель - тэг <p>), а уже потом тэг <a> с уровнем 2
  • Сначала отображается содержимое атрибутов каждого тэга, а потом его содержимое. Поэтому в примере сначала идёт строка <a> (title), а уже потом <a>
  • Символы дочерних элементов не идут в счёт родительских

Список возможных ошибок

Ниже представлен список ошибок, которые могут возникать при использовании парсера, и инструкции по их устранению. В случае, если любые ошибки парсинга не удаётся решить самостоятельно, обращайтесь на почту support@inspector-cat.com.

#101: Возможно, дубликат страницы

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

#301: Неверно указан адрес сайта

Адрес сайта, который Вы хотите посчитать, должен соответствовать формату http://example.com, а именно:

  • Начинаться с протокола http:// или https://
  • Содержать имя домена или поддомена с указанием доменной зоны, например, http://example.com или http://www.news.example.ru
  • Может содержать замыкающий слэш, но ничего после слэша, например, http://example.com или http://example.com/, но не http://example.com/page

#302: Неверно указаны некоторые ссылки

Все вводимые ссылки должны соответствовать формату http://example.com/page, а именно:

  • Начинаться с протокола http:// или https://
  • Содержать имя домена или поддомена с указанием доменной зоны, например, http://example.com или http://www.news.example.ru
  • Могут содержать адрес страницы, замыкающий слэш, список параметров, например, http://example.com или http://example.com/page/, или http://example.com/page?param=1

#303: Неверный формат имени куки

Убедитесь, что правильно ввели имя куки. Имена куки не могут содержать такие символы как = , ; или символ пробела.

#304: Неверный формат значения куки

Убедитесь, что правильно ввели значение куки. Значения куки не могут содержать такие символы как , ; или символ пробела.

#305: Неверно указан email

Неверно указан формат электронной почты для отправки результатов парсинга. Убедитесь, что ввели правильный email.

#306: Повторяющиеся имена куки

Имена куки не должны повторяться. Убедитесь, что не ввели одно и то же имя дважды.

#401: Не удалось загрузить страницу

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

#402: Файл не является html-файлом

Файл, расположенный по указанной ссылке, не является html-файлом, поэтому не может быть обработан парсером.

#403: Размер файла превышает максимально допустимый

Размер веб-страницы превышает максимально допустимый. Мы работаем над устранением этого ограничения.

#404: Страница не найдена

Не удалось найти указанную страницу. Убедитесь, что правильно ввели адрес.

#405: Произошла ошибка:...

При загрузке страницы сервер выдал ошибку. Текст и номер ошибки будут представлены в неизменённом виде.

#406: Не удалось распарсить страницу

Страница не может быть обработана. Возможно, страница не является валидным html-файлом.

#501: Неверный номер сессии, либо сессия повреждена

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

#502: Ожидаемый URL не найден

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

#503: Не удалось удалить, произошла ошибка

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

#504: Произошла ошибка запроса

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