Настройка DOM шаблонов

Дорогие друзья, хоть мы и выпустили очень полезную и супер удобную возможность парсинга сайтов, с помощью DOM шаблонов, многие пользователи по-прежнему продолжают использовать простые шаблоны. Они тоже удобные и эффективные, но цель данной статьи познакомить вас поближе именно с DOM шаблонами парсинга  статей. Как мы писали ранее, в рамках пресс релиза выхода 4.4 версии парсера сайтов FDE Grabber, DOM – это аббревиатура от английскогоDocument Object Model”, что переводится на русский, как “Объектная Модель Документа”. Любой документ известной структуры с помощью DOM может быть представлен в виде дерева узлов, каждый узел которого представляет собой элемент, атрибут, текстовый, графический или любой другой объект. Узлы связаны между собой отношениями “родительский-дочерний”. Иными словами, система импорта новостей FDE Grabber теперь умеет построить из HTML кода документа иерархическое DOM дерево, состоящее из узлов, связанных между собой отношениями родитель-дочерний элемент. Чтобы иметь возможность смотреть DOM структуру документа статьи мы советуем вам установить бесплатное дополнение к браузеру FireFox - FireBug, для этого заходим через браузер FireFox на сайт https://addons.mozilla.org/ru/firefox/ Проводим поиск плагина, указывая в поисковом запросе "FireBug" https://addons.mozilla.org/ru/firefox/addon/firebug/?src=ss Далее нажимаем на кнопку "Добавитиь в FireFox", добавляем плагин, перезапускаем браузер FireFox и пробуем его в действии. Пусть для примера мы хотим составить DOM шаблон для парсинга страниц сайта https://warezed.ru/. Для этого открываем любую страницу с контентом, например https://warezed.ru/819-Nad-Severnym-morem-vot-vot-vzorvetsya-gaz.html через браузер FireFox, выделяем текст статьи: Вызываем контекстное меню, кликая правой кнопкой мышки по выделенному тексту статьи: В открывшейся панели ищем уникальный родительский элемент, содержащий полный текст статьи: Мы видим, что полезный контент статьи полностью содержится в теге span со стилевым классом news Поэтому мы можем составить наш DOM шаблон как span.news (это очень напоминает описание CSS стилей). Для уверенности в уникальности нашего шаблона  мы можем пойти дальше и составить иерархическую цепочку, замечая, что элемент span.news является дочерним по отношению к элементу div.big-news, поэтому альтернативный DOM шаблон будет выглядеть так: div.big-news span.news (что опять-таки идентично CSS нотации описания стилей). Или даже так: body div.big-news span.news В общем случае иерархическая DOM цепочка узлов может быть неограниченной. В случае, когда стилевой класс указывается через пробел, например для атрибута class=″main left″ в теге div, который является дочерним по отношению к body мы не можем записать шаблон в виде body div.main left, так как интерпретатор граббера будет думать что div.main содержит в себе элемент left, что в корне неверно - для таких случаев нотация должна иметь вид: body>div.main left, то есть в этом случае мы иерархическую последовательность узлов разделяем не пробелами, а через символы ″>″. Вот так, легко и непринуждённо мы можем составлять DOM шаблоны для парсера контента FDE Grabber. Обо всех особенностях их составления не поленитесь и дочитайте статью полностью ;-) Для того, чтобы открыть панель FireBug также можно воспользоваться иконкой так, как показано на скриншоте ниже: Как работает DOM парсинг на примере разбора содержимого статьи:

  • указывается DOM шаблон
  • FDE Grabber преобразует документ в иерархическое  DOM дерево
  • начинается поиск по указанному DOM шаблону необходимого нам элемента  и в случае его нахождения мы получим полезный контент
Как выглядит DOM шаблон В DOM шаблоне указываются DOM элементы (узлы)  в виде иерархической последовательности (как и в CSS стилях или, например jquery). Рассмотрим пример. Пусть, полезный контент содержится в документе, который выглядит следующим образом:
<body>
	<div>
		<table>
			<tr>
				<td>
					<div class=″content″>
полезное содержимое,
которое мы хотим получить
					</div>
				</td>
			</tr>
		</table>
	</div>
</body>
Тогда мы можем выстроить некоторый шаблон, который будет выглядеть, например так: body div table div.content Последовательность body div table div.content означает, что мы ищем элемент div со стилевым классом “content“, который является дочерним по отношению к table, а table в свою очередь дочерним, по отношению к div, а div к body. Допускается указание идентификаторов, в виде div#id, где div - это элемент с идентификатором “id“. Кроме того, допускается указание любой общности элементов в виде “*”. Конструкция вида *.content означает любой элемент со стилевым классом “content” Ну хорошо, скажете вы, но это не позволяет распознать контент в большинстве сайтов, работающих на популярном движке DLE. Контент там находится, обычно в блочных элементах с уникальным идентификатором, вида news-id-555555 ДА! Именно поэтому мы сделали возможность указания дополнительного сопоставления атрибутов Например, id {preg} #content_\d+#i – это сопоставление значения атрибута id с указанным регулярным выражением #content_\d+#i. width {like} 100 – это сопоставление значения атрибута width со строковым значением “100” (не регулярное выражениие). Как несложно догадаться, для всех сайтов, работающих на DLE унас будет всего один универсальный шаблон: id {preg} #news\-id\-\d+#is На скриншоте ниже приводится пример настройки граббера FDE Grabber под любой сайт, работающий на CMS DataLife Engine: Кроме поиска, по такой же схеме мы сделали возможность указания DOM замен. При этом можно заменить любой DOM элемент на указанную замену. Парсить с помощью DOM шаблонов в FDE Grabber можно не только полное содержимое статей, но и источники.

Настройка DOM шаблонов, читать далее...

Вышла новая версия парсера статей FDE Grabber 4.5

Дорогие друзья! С радостью сообщаем о том, что выпущена новая версия системы импорта новостей FDE Grabber 4.5 О том, какие изменения были сделаны в новой версии читайте ниже:

  • добавлена возможность массового изменения настроек категорий источников
  • добавлена возможность массового изменения настроек источников
  • у статей добавлен новый статус "в архиве"
  • добавлена возможность помещать статьи сразу после публикации в архив, а также перемещать их через раздел "статьи"
  • добавлена возможность получения страниц сжатых на стороне сервера (gzip, deflate  и т.д.)
  • улучшена система обхода защит от ботов на некоторых сайтах - теперь граббер в своём поведении ещё больше похож на обычный браузер клиента
  • исправлены мелкие недочёты
Рассмотрим более подробно новые возможности, которые появились в новой версии.

Массовое изменение настроек категорий источников

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

Массовое изменение настроек выбранных источников

Изменение настроек источников происходит по полностью аналогичной схеме:

Когда это может понадобиться?

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

Статус статей "в архиве"

Новый статус призван оптимизировать использование дискового пространства на вашем хостинге. Так, если мы уже опубликовали статью в CMS, то в большинстве случаев хранить её полную копию в граббере (контент, картинки и т.д.) нет смысла, так, как это занимает драгоценное дополнительное дисковое пространство на вашем хостинге. Но и полностью удалять статью нельзя, так как если её удалить, то могут появляться дубли (граббер узнаёт о том получал ли уже данную статью по адресу и заголовку). Так вот, теперь новый статус "статья в архиве"  позволяет экономно расходовать дисковое пространство на вашем хостинге - статья удаляется не полностью, а лишь частично: удаляется её контент и картинки, а нужный нам заголовок и адрес статьи остаются нетронутыми. Следует отметить, что по умолчанию статья при публикации не попадает в архив автоматически. Если вы желаете экономно расходовать дисковое пространство на своём хостинге, то требуется активировать опцию автоматического перемещения опубликованной статьи в архив: Также в архив статьи можно перемещать вручную через раздел "статьи" в граббере Итоги. В целом это ожидаемое обновление и улучшение функционала системы импорта новостей FDE Grabber, обеспечивающее большую гибкость, удобство  и комфорт настройки.

Вышла новая версия парсера статей FDE Grabber 4.5, читать далее...

Граббинг сайтов без указания шаблонов. Возможно ли такое?

В FDE Grabber 4.4 появилась новая возможность для парсинга сайтов - бесшаблонный граббинг/парсинг. Теперь достаточно поставить галочку и система будет сама искать полезный контент: Как показали тесты, система очень хорошо с этим справляется, и действительно, в большинстве случаев выдаёт ожидаемый результат. Разумеется, как и  прежде можно указывать шаблоны для тонкой профессиональной настройки парсера сайтов FDE Grabber.

Граббинг сайтов без указания шаблонов. Возможно ли такое?, читать далее...

Вышла новая версия FDE Grabber 4.4

Сообщаем о том, что вышла новая версия граббера статей и новостей FDE Grabber 4.4 Можно отметить, что с этой версии в системе импорта новостей FDE Grabber  начинается новая веха в истории развития. Было сделано множество изменений в плане улучшения производительности системы, а также реализовано немало новых идей… Какие изменения и дополнения в новой версии граббера?
  • При настройке категории добавлена возможность указания минимального необходимого количества в статье картинок. Так, в случае когда количество изображений в статье  меньше указанной величины, то статья будет удалена и не будет получена
  • Добавлена возможность бесшаблонного парсинга новостей (статей). Это означает, что теперь в большинстве случаев можно получать полезный контент полного содержимого статьи вообще не составляя никакого шаблона!
  • Появилась возможность DOM парсинга как содержимого статей так и источников.
  • Появилась возможность DOM замен, наряду с обычными заменами и заменами, с помощью регулярных выражений
А теперь непосредственно о самом главном, о DOM парсинге и о преимуществах, которые мы получаем, используя DOM шаблоны DOM – это аббревиатура от английскогоDocument Object Model”, что переводится на русский, как “Объектная Модель Документа”. Любой документ известной структуры с помощью DOM может быть представлен в виде дерева узлов, каждый узел которого представляет собой элемент, атрибут, текстовый, графический или любой другой объект. Узлы связаны между собой отношениями “родительский-дочерний”. Иными словами, система импорта новостей FDE Grabber теперь умеет построить из HTML кода документа иерархическое DOM дерево, состоящее из узлов, связанных между собой отношениями родитель-дочерний элемент. При этом технология DOM парсинга разработана нами самостоятельно, в стенах компании FDSTAR и не основывается ни на каких-либо чужих разработках. Как работает DOM парсинг на примере разбора содержимого статьи:
  • указывается DOM шаблон
  • FDE Grabber преобразует документ в иерархическое  DOM дерево
  • начинается поиск по указанному DOM шаблону необходимого нам элемента  и в случае его нахождения мы получим полезный контент
Как выглядит DOM шаблон В DOM шаблоне указываются DOM элементы (узлы)  в виде иерархической последовательности (как и в CSS стилях или, например jquery). Рассмотрим пример. Пусть, полезный контент содержится в документе, который выглядит следующим образом:
<body>
	<div>
		<table>
			<tr>
				<td>
					<div class="content">
полезное содержимое,
которое мы должны получить
					</div>
				</td>
			</tr>
		</table>
	</div>
</body>
Тогда мы можем выстроить некоторый шаблон, который будет выглядеть, например так: body div table div.content Последовательность body div table div.content означает, что мы ищем элемент div со стилевым классом “content“, который является дочерним по отношению к table, а table в свою очередь дочерним, по отношению к div, а div к body. Допускается указание идентификаторов, в виде div#id, где div - это элемент с идентификатором “id“. Кроме того, допускается указание любой общности элементов в виде “*”. Конструкция вида *.content означает любой элемент со стилевым классом “content” Ну хорошо, скажете вы, но это не позволяет распознать контент в большинстве сайтов, работающих на популярном движке DLE. Контент там находится, обычно в блочных элементах с уникальным идентификатором, вида news-id-555555 ДА! Именно поэтому мы сделали возможность указания дополнительного сопоставления атрибутов Например, id {preg} #content_\d+#i – это сопоставление значения атрибута id с указанным регулярным выражением #content_\d+#i. width {like} 100 – это сопоставление значения атрибута width со строковым значением “100” (не регулярное выражениие). Как несложно догадаться, для всех сайтов, работающих на DLE унас будет всего один универсальный шаблон: id {preg} #news\-id\-\d+#is Кроме поиска, по такой же схеме мы сделали возможность указания DOM замен. При этом можно заменить любой DOM элемент на указанную замену. Парсить с помощью DOM шаблонов в FDE Grabber можно не только полное содержимое статей, но и источники. Итоги Как мы видим, теперь имеется возможность ещё более удобного указания шаблонов для парсинга и время на реализацию новых идей! Посмотреть демо версию системы импорта новостей FDE Grabber можно как и всегда на странице: https://fdegrabber.demo.fdstar.net/ логин: admin пароль: 123456

Вышла новая версия FDE Grabber 4.4, читать далее...

Вышла новая версия системы импорта новостей FDE Grabber 4.3

С радостью сообщаем о том, что вышла новая версия граббера сайтов FDE Grabber 4.3 Об изменениях/дополнениях: 1 - изменена система логирования. Теперь в лог записи попадают не одноязычной фразой, язык которой совпадает с языком интерфейса по умолчанию, а в виде параметров, что даёт возможность при просмотре лога показывать пояснение на текущем языке, выбранном админом 2 - добавлена возможность замен регулярными выражениями, а также обычных замен после основных преобразований контента (когда применять замену указывается при настройке категории) 3 - добавлены два хака для указания ссылки на источник. Можно настроить указание ссылок на источник по своему усмотрению и вкусу, изменив файл хака (хаки обязательно требуется сохранять в кодировке UTF-8) 4 - добавлен новый хак корректировки незакрытых тегов. Работает быстрее чем предыдущий.Поэтому именно он теперь используется в  комплексном хаке "красивый контент" 5 - добавлена возможность предпросмотра статей в списке статей. Просмотр можно осуществлять как в виде HTML так и обычном, добавлена возможность быстрого ajax просмотра при наведении мышки на ссылку "просмотр" Теперь можно купить граббер в полностью автоматическом режиме, оплатив через систему WebMoney Transfer, подробности здесь: https://fde-cms.ru/buy_grabber.html Подробное описание системы импорта новостей FDE Grabber можно найти здесь: https://fdstar.net/fde-grabber.html Как обновить систему на новую версию? – зайти в персональный кабинет на нашем сайте https://fde-cms.com/ или https://fde-cms.ru/ - скачать дистрибутив версии 4.3* - следовать инструкции по обновлению, которая находится в корне дистрибутива (файл “how_to_update_from_4.2_to_4.3.txt”, текст сохранён в кодировке Windows-1251) Были вопросы о том, как это сделать, как скачать дистрибутив - ответ прост:

  • логинимся на сайт https://fde-cms.com/ или https://fde-cms.ru/ (первый на английском языке, второй на русском)
  • заходим в раздел лицензий:   https://fde-cms.ru/do/my_licenses/. Если у вас ещё нет лицензии, то её можно купить на странице https://fde-cms.ru/do/order/ (требуется залогиниться)
  • на странице лицензий находим нужный дистрибутив и нажимаем на ссылку "скачать" (смотрите скриншот ниже). Здесь требуется предостеречь: не нажимайте по несколько раз на эту ссылку - генерация дистрибутива довольно длительный процесс, поэтому требуется дождаться ответа сервера, в случае двойного нажатия сайт вас забанит и придётся писать в службу поддержки для разблокировки

Вышла новая версия системы импорта новостей FDE Grabber 4.3, читать далее...

Полный цикл настройки граббера

В данной статье мы постарались уместить полный цикл настройки граббера под импорт новостей с определённого сайта. Итак, допустим мы определились с тем, что хотим грабить с сайта https://warezed.ru/ Что мы должны сделать в самом начале? В начале мы должны перейти по одному из адресов полных статей, допустим: https://warezed.ru/news/12604-V_Katare_otkrylsya_21_iy_sammit_LAG.html

Полный цикл настройки граббера, читать далее...

Грабим по полной

Для начала нам нужно себе уяснить что такое "пейджер" Пейджер происходит от английского слова page и означает нумерацию страниц в виде ссылок: back  1  2  3  …  100 forward Да - пейджер, это просто общее название разбиения на страницы большого списка новостей. Очевидно, что каждая страница пейджера является для граббера HTML источником Предположим, что адреса страниц в пейджере выглядят примерно так: https://fdstar.com/page/1/ https://fdstar.com/page/2/ https://fdstar.com/page/3/ … https://fdstar.com/page/100/ Тогда можно выявить некоторую закономерность и написать шаблон: https://fdstar.com/page/{page}/ Для задействованиея этой функции в парсере новостей FDE Grabber требуется вместо обычного адреса HTML списка новостей указать шаблон вида https://fdstar.com/page/{page}/ И указать диапазон значений, который будет принимать переменная  {page}. Также можно указать как положительное приращение, так и отрицательное для переменной {page}. В случае положительного приращения обход будет идти так: 1  2  3  ... 100. Ну а в случае отрицательного: 100  99  98  ...  1

Грабим по полной, читать далее...

Подбираем хостинг

В случае, если Вы используете выделенный сервер (Dedicated Server) или виртуальный выделенный сервер (VDS - Virtual Dedicated Server или VPS - Virtual Private Server), то его можно настроить как угодно под себя, и проблем с запуском системы публикации новостей FDE Grabber быть не может. Но вот что делать, если Вы пока не готовы использовать выделенный или виртуальный сервер, но всё-же хотите полноценно работать с граббером? - для этого просто нужно подобрать подходящий виртуальный хостинг. Мы подготовили небольшой список хостинг-провайдеров, на которых была успешно испытана система парсинга новостей FDE Grabber: https://peterhost.ru/ https://agava.ru/ https://masterhost.ru/ данный список будет, со временем пополняться, и вы можете в этом нам помочь :-)

Подбираем хостинг, читать далее...

Полный автомат по крону

Что такое сron

cron — демон-планировщик задач в UNIX-образных операционных системах, использующийся для периодического выполнения заданий в заданное время. Подробнее о нём можно узнать здесь: https://ru.wikipedia.org/wiki/Cron У парсера новостей FDE Grabber имеется 4 этапа работы:

  1. кроновский скрипт путь_к_грабберу/crontab_feeds.php определяет один из доступных источников получения статей (RSS/Atom/HTML источник) и обновляет его. Если, при этом, имеются новые статьи (уникальность статьи определяется по названию), то статьи будут добавлены в качестве задания для получения По мере запуска данного кроновского скрипта, источники обновляются по кругу Каждому запуску скрипта соответствует одно обновление одного из доступных источников
  2. кроновский скрипт путь_к_грабберу/crontab_articles.php смотрит на задания для получения статей и получает статью. Одному запуску данного скрипта соответствует одно получение статьи
  3. кроновский скрипт путь_к_грабберу/crontab_downloads.php скачивает, если это необходимо, прикреплённый файл к полученной  на 2 этапе статье.
  4. кроновский скрипт путь_к_грабберу/crontab_publicate.php публикует полученные статьи в вашу CMS

наиболее оптимальными режимами обновления кроновских скриптов системы наполнения сайтов FDE Grabber являются такие:

crontab_feeds.php - обновляем каждые 5 минут crontab_articles.php - обновляем каждые 2 минуты crontab_downloads.php - обновляем каждую минуту crontab_publicate.php - обновляем каждые 4 минуты

Перед тем, как добавлять задания для запуска кроновских скриптов, нам потребуется выяснить путь к PHP интерпретатору на сервере. Узнать этот путь можно несколькими способами:

  1. посмотреть расположение файлов на диске, скорее всего потребуются права администратора сервера
  2. пойти на поклон к хостеру и спросить :-)
  3. если имеется доступ через SSH - выполнить в командной строке: whereis php
  4. выполнить один из следующих скриптов:

<?php echo `whereis php`; ?>

<?php echo exec(’whereis php’); ?>

<?php echo system(’whereis php’); ?>

Предположим, что мы выяснили путь к PHP интерпретатору на нашем сервере, и он выглядит так: /usr/bin/phpТогда, задания для запуска скриптов будут выглядеть так:

*/5 * * * * /usr/bin/php путь_к_грабберу/crontab_feeds.php > /dev/null 2>&1
*/2 * * * * /usr/bin/php путь_к_грабберу/crontab_articles.php > /dev/null 2>&1
*   * * * * /usr/bin/php путь_к_грабберу/crontab_downloads.php > /dev/null 2>&1
*/4 * * * * /usr/bin/php путь_к_грабберу/crontab_publicate.php > /dev/null 2>&1

где путь_к_грабберу- это полный путь к грабберу на сервере, например /var/www/grabber.ru/fde

Узнать полные пути к кроновским скриптам граббера можно в разделе граббера "ручной крон"

По большому счёту, кроновские скрипты парсера контента FDE Grabber можно запускать и не зная пути к интерпретатору, например в таком виде:

*/5 * * * * php -f путь_к_грабберу/crontab_feeds.php > /dev/null 2>&1
*/2 * * * * php -f путь_к_грабберу/crontab_articles.php > /dev/null 2>&1
*   * * * * php -f путь_к_грабберу/crontab_downloads.php > /dev/null 2>&1
*/4 * * * * php -f путь_к_грабберу/crontab_publicate.php > /dev/null 2>&1

Кроме того, мы можем запускать кроновские срипты граббера и через утилиту wget. Пусть, например, URL граббера выглядит так: https://test.com/ - тогда запуск кроновских скриптов через wget по крону будет выглядеть следующим образом:

*/5 * * * * wget -O /dev/null -q https://test.com/crontab_feeds.php >/dev/null 2>&1
*/2 * * * * wget -O /dev/null -q https://test.com/crontab_articles.php >/dev/null 2>&1
*   * * * * wget -O /dev/null -q https://test.com/crontab_downloads.php >/dev/null 2>&1
*/4  * * * * wget -O /dev/null -q https://test.com/crontab_publicate.php >/dev/null 2>&1

Полный автомат по крону, читать далее...

Crop image. Что за зверь

Кроппинг картинок - это просто обрезка картинок, не более. Но эта функция в парсере новостей FDE Grabber оказалась как нельзя кстати. Дело в том, что многие люди хотят получить из своего сайта некое подобие новостного портала. В новостных сайтах список кратких новостей обычно включает иллюстрации совершенно одинаковых размеров. Пример такого сайта: https://warezed.ru/ Мы видим, что все картинки обрезаны до определённого размера. Так вот, операция обрезки изображения называется кроппингом. И если вы тоже хотите задействовать в своём граббере эту функцию, то следуйте приведённым ниже инструкциям. Чтобы включить данную опцию в граббере, нужно перейти в раздел категорий и выбрать интересующую категорию. Среди настроек выбранной категории имеются: - разумеется нам придётся сохранять картинки на сервер, поэтому указываем “сохранять картинки на сервер” “Что делать с картинками больших размеров” -  здесь есть, на самом деле, два варианта для кроппинга. Один из них: “Уменьшать, обрезая до заданных размеров и делать ссылку на большую картинку”, а другой: “Уменьшать физически картинку, обрезая до заданных размеров” Также, нам потребуется указать размеры под которые будет производиться обрезка: Максимальная ширина картинки и Максимальная высота картинки

Crop image. Что за зверь, читать далее...

Разделы сайта

Форум web-разработчиков

Последние записи