Пример настройки импорта новостей с сайта top.rbc.ru

Вопросы по настройке плагина WPGrabber

Модератор: Admin

Ответить
Аватара пользователя
Admin
Администратор
Сообщения: 578
Зарегистрирован: 22 ноя 2015, 12:18
Откуда: СССР
Благодарил (а): 48 раз
Поблагодарили: 20 раз
Контактная информация:

Пример настройки импорта новостей с сайта top.rbc.ru

Сообщение Admin » 22 ноя 2015, 13:02

В данном примере мы разберем настройку html-импорта новостей с сайта https://top.rbc.ru/, а точнее с его раздела Главные новости.

1) Выбираем Новая лента в плагине WPGrabber и в поле Наименование ленты пишем какое-либо название для нашей первой настройки импорта. Вы можете написать в данный параметр все что угодно, к примеру: Главные новости РБК.

2) В типе ленты у нас должно быть выбрано значение html

3) Следующий обязательный параметр, который нужно указать это URL индексной страницы. Это URL-адрес в строке браузера той страницы сайта, с которой мы будем собирать ссылки на необходимые нам новости.

Изображение

В нашем случаем это адрес: https://top.rbc.ru/

4) Далее нам надо указать такой важный параметр как Кодировка HTML-страницы.

Кодировку страницы сайта можно узнать в ее исходном HTML-коде.

Теперь для удобства откройте страницу https://top.rbc.ru/ на другой вкладке вашего браузера.

После загрузки данной страницы, откройте ее исходный код (HTML-код страницы).

В браузере Google Chrome это делается с помощью нажатия сочетания клавиш Ctrl + U.

Можно также просто щелкнуть в любом месте по странице правой кнопкой мыши и выбрать Просмотр кода страницы.

Изображение

В FireFox и Internet Explorer сочетание Ctrl + U работает так же.

В открытом исходном коде ищем строку вида:

Изображение

Здесь utf-8 как раз таки и есть кодировка страницы! Потому выбираем в параметре Кодировка HTML-страницы значение UTF-8.

В некоторых случаях при большом количестве кода для того чтобы проще найти строку с упоминанием кодировки воспользуйтесь поиском слова charset. Для поиска в Google Chrome и других браузерах достаточно лишь нажать сочетание клавиш Ctrl + F и ввести слово charset. Скорее всего первым результатом поиска в исходном коде будет нужная вам строка с указанием кодировки.

Еще раз обратите внимание на то, как в исходном html-коде страницы указывается кодировка:

<meta https-equiv="Content-Type" content="text/html; charset=ЗДЕСЬ КОДИРОВКА"/>

На некоторых сайтах кодировка не указана, тогда пробуйте значение: Исходная, или же WINDOWS-1251.

5) Теперь нам необходимо определить один из самых главных параметров (параметр: Шаблон ссылок), с которого начинается сбор ссылок на интересующие нас страницы сайта, которые мы хотим импортировать к себе на сайт.

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

Для этого выделяем и копируем текст (или часть текста) первого или любого другого заголовка новости (т.е. непосредственно текст ссылки ведущей на страницу новости) на странице https://top.rbc.ru/, к примеру на момент написания данной статьи заголовок первой новости: "На Украине стартовали выборы в Раду"

Изображение

Теперь переходим на открытую нами ранее вкладку исходного кода страницы https://top.rbc.ru/ и делаем поиск в ней по скопированному нами тексту заголовка. Для этого я нажимаю сочетание клавиш Ctrl + F и в поле поиска вставляю скопированный текст: "На Украине стартовали".

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

Так как данный текст может встречаться в исходном коде страницы не только внутри ссылок, но и в других местах, нам необходимо найти именно ту часть кода, где перед искомым текстом находится открытый html-тег ссылки: <a href="/ а после идет закрывающий тег </a>, в этом примере второе совпадение части текста (На Украине стартовали) оказалось именно таким:

Изображение

Конкретно здесь, нас интересует именно тег A, вернее его свойство href, которое является URL-адресом данной ссылки. Из выше приведенного примера видно, что страница новости под заголовком "На Украине стартовали выборы в Раду" находится по адресу: https://top.rbc.ru/politics/26/10/2014/5 ... 6019aaeb46

Проанализируем структуру этого URL-адреса:

https://top.rbc.ru/слово/2-е цифры/2-е цифры/4-е цифры/некоторое кол-во букв и цифр

обратите внимание, что описав таким словесным способом этот адрес мы оставляем без изменений некоторые его части, а именно: адрес сайта https://top.rbc.ru, потому эта часть адреса остается неизменной для всех остальных ссылок, представленных на странице.

Теперь давайте посмотрим на другие ссылки к остальным новостям:

https://top.rbc.ru/textonlines/26/10/201 ... 29aa5eb36d
https://top.rbc.ru/society/26/10/2014/54 ... da6d160a8b
https://top.rbc.ru/politics/25/10/2014/5 ... 9fe42c1e93
https://top.rbc.ru/politics/26/10/2014/5 ... c840db65e6
https://top.rbc.ru/economics/25/10/2014/ ... 365c3f754f

Все выше перечисленные ссылки подходят по ранее описанный "словесный" шаблон. Для задания шаблона ссылок в WPGrabber необходимо использовать определенный формат описания таких шаблонов (формат описания регулярных выражений PCRE, о PCRE на Википедии).

Как мы видим, за место вхождения части под названием «слово» в словесном описании адреса у нас встречаются следующие варианты текста: textonlines, society, politics и economics. Эти варианты имеют разную длину (кол-во символов), а также скорее всего могу включать в себя еще и цифры. Единственный символ который не может встретится в части адреса под названием «слово» - это символ пробела, потому что пробелы в URL адресах недопустимы!

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

Обратите внимание на слэш \ перед заглавной буквой S. Обратный слэш в регулярных выражениях отменяет обычное действие символа, мы могли бы написать просто символ буквы S и тогда она была бы просто заглавной буквой S в нашем регулярном выражении. Однако \S — означает ровным образом один любой символ, кроме пробела!

Так как наши вариации слов: textonlines, society, politics и economics состоят из нескольких символов (букв слова), нам нужно как-то указать в нашем выражении кол-во символов. Для этого используются фигурные скобки.

к примеру выражение \S{5} означает ровно 5-ть подряд идущих непробельных символа.

К примеру слово "гамбургер" попадает под регулярное выражение \S{9}, но не попадает под выражение \S{4}, потому что в слове гамбургер именно 9 букв, а не 4.

Помимо точного указания кол-ва символов в строке, регулярные выражения позволяют указывать и диапазон символов, к примеру под выражение: \S{3,6} попадают все слова длиною от 3-х до 6 символов (включительно!).

Также есть возможность указания минимального кол-ва символов в строке без указания максимального, к примеру: \S{4,} — все слова от 4-х символов длиной и больше.

Давай-те еще раз взглянем на наши варианты: textonlines, society, politics и economics. Длина слов : 11, 7, 8 и 9 символов. Для большей надежности можно предположить, что длина слов в этой части адреса будет составлять от 1-го и более символов.

Переписав начальную часть нашего шаблона мы получим следующее:

https://top.rbc.ru/\S{1,}/

На данном этапе мы могли бы записать весь шаблон ссылок в виде:

https://top.rbc.ru/\S{1,}/\S{2}/\S{2}/\S{4}/\S{1,}

однако некоторые части URL-адреса ссылок, содержат явные цифры, а не просто любые непробельные символы. Для описания именно цифр от 0 до 9 в регулярных выражения используется конструкция вида \d. Для указания количества подряд идущих цифр в выражении используется та же самая конструкция с фигурными скобками, а именно: \d{4} — означает 4-подряд идущие цифры, к примеру: 8976 или 6789 и т.д.

Перепишем наше выражение с учетом вхождения в него именно цифр а не всех символов:

https://top.rbc.ru/\S{1,}/\d{2}/\d{2}/\d{4}/\S{1,}

Данное выражение можно смело вставить в Шаблон ссылок, нажать на кнопку Применить, и после сохранения настроек ленты нажать на кнопку Тест импорта, чтобы убедится в правильности составления регулярного выражения поиска ссылок в тексте сайта.

Теперь обратите внимание, что Плагин нашел гораздо больше ссылок, чем нам нужно. Более того в наш список ссылок попали такие ненужные нам ссылки:

Изображение

А также, неправильные (не работающие) ссылки вида :

https://top.rbc.ru/politics/26/10/2014/5 ... 6019aaeb46"
https://top.rbc.ru/politics/26/10/2014/5 ... 6019aaeb46">

Это всё потому, что конструкция \S{1,} собирает все не пробельные символы длинной от одного и больше. Т.е., в нашу выборку попадают и кавычки (") и треугольная стрелка вправо (>), которые не должны быть в URL-адресе ссылки.

Нас же интересуют только буквы и цифры в последней части URL-адресов ссылок:

https://top.rbc.ru/textonlines/26/10/201 ... 29aa5eb36d
https://top.rbc.ru/society/26/10/2014/54 ... da6d160a8b
https://top.rbc.ru/politics/25/10/2014/5 ... 9fe42c1e93

Когда нам нужно в регулярном выражении перечислить вхождение разных символов (набора символов), то мы можем использовать квадратные скобки. Выражение вида:

[\w\d]{1,}

буквально означает: любая одна буква или одна цифра или более подобных символов.

К примеру, под выражение вида (любые две буквы или цифры или и буквы и цифры и более подобных символов):

[\w\d]{2,}

попадут строки :

aa
b3
3g
bb432
g0
111


но, не попадут, строки вида:

11"
-7j
9
3_23
<bh

Таким образом, если мы перепишем наше выражение в виде:

https://top.rbc.ru/\S{1,}/\d{2}/\d{2}/\d{4}/[\w\d]{1,}

Оно перестанет отлавливать ненужные и неправильные ссылки!

Вставьте это выражение в Шаблон ссылок, нажмите Применить, а затем Тест импорта и Вы увидите как плагин найдет уже всего 12 ссылок и все они будут правильными!

Для верности переходим на страницу https://top.rbc.ru/ и считаем кол-во ссылок на новости проверяя правильность настройки шаблона ссылок. На странице https://top.rbc.ru/ помимо 10 ссылок расположенных в центре страницы под наш шаблон попали еще 2 ссылки, расположенные в других частях страницы. В следующем уроке Вы сможете найти информацию о том, как выбрать ссылки только из определенной части начальной страницы.

Внимание! Если в режиме теста импорта у вас на экране отображается надпись Найдено ссылок: 0 — дальнейшая настройка других параметров ленты практически лишена смыла! Нет ссылок на новости — не будет импортированных записей в WordPress.

А если WPGrabber не находит ссылки на новости - значит вы сделали ошибку в написании регулярного выражения шаблона ссылок или же неправильно указали параметры: URL индексной страницы или Кодировка HTML-страницы.

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

Приведем весь их перечень через запятую: ., *, +, ?, |, (, ), [, ], {, }, $, ^

Когда вы в регулярном выражении пишите к примеру символ точки (.)- то он не означает в прямом смысле простую точку в тексте. Точка в регулярном выражении — это служебный символ обозначающий вхождение любого символа алфавита, циферного символа, символа пробела и вообще любого другого символа. Т.е. точка в регулярном выражении — это вообще любой символ в тексте.

Таким образом под выражение:

https://top.rbc.ru/\S{1,}

попадут не только адреса вида:

https://top.rbc.ru/blog
https://top.rbc.ru/123

но также адреса вида:

https://top1rbc-ru/d343

или

https://top8rbc6ru/soc

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

Таким образом, по правильному наш шаблон необходимо переписать в следующий вид:

https://top\.rbc\.ru/\S{1,}/\d{2}/\d{2}/\d{4}/[\w\d]{1,}

т.е. экранировать в нем все вхождения точки как служебного символа.

Вы спросите, почему же наш шаблон даже в виде:

https://top.rbc.ru/\S{1,}/\d{2}/\d{2}/\d{4}/[\w\d]{1,}

сработал успешно? Ответ прост: точка в регулярном выражении, как я уже написал выше, обозначает любой символ, в том числе простую точку!

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

Изображение

Мы не задали правила выборки двух основных параметров для записей WordPress - это заголовок и текст.

6) Начнем с Заголовка — который при импортировании ленты будет заголовком создаваемых в WordPress записей (постов).

Для того чтобы WPGrabber нашел заголовок в тексте страницы определенной новости нам необходимо описать шаблон его поиска. Тут тоже используется формат регулярных выражений как и в описании Шаблона ссылок.

Итак, перейдем на сайт https://top.rbc.ru/, скопируем текст заголовка (или его часть) любой новости. В моём случае это заголовок новости: "На Украине стартовали выборы в Верховную раду". Далее перейдем по ссылке выбранной новости: https://top.rbc.ru/politics/26/10/2014/5 ... 6019aaeb46.

Попав на страницу новости, открываем ее исходный код (как открыть исходный код страницы было описано выше, используйте сочетание Ctrl + U). Произведем поиск нашего заголовка в исходном тексте страницы:

Изображение

Обратите внимание, что в числе первого найденного включения (вхождения) заголовка на странице https://top.rbc.ru/politics/26/10/2014/5 ... 6019aaeb46, вы найдете следующий часть кода:

<title>На Украине стартовали выборы в Верховную раду :: Политика :: РосБизнесКонсалтинг</title>

Однако не спешите использовать это вхождение, ведь в нём у нас помимо текста самого заголовка "На Украине стартовали выборы в Верховную раду" присутствует еще и добавочный текст " :: Политика :: РосБизнесКонсалтинг", который нам совсем ни к чему в заголовке записей.

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

<meta name="title" content="На Украине стартовали выборы в Верховную раду" />

А также еще ниже:

<meta property="og:title" content="На Украине стартовали выборы в Верховную раду " />

Использовать можно любое чистое вхождение текста заголовка.

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

<meta name="title" content=".{1,}" />

Вы же помните, что точка - это не просто точка, а любой символ в регулярном выражении!

Однако такое выражение вернет нам всю строку целиком, т.е. в заголовок материала попадет строка вида:

<meta name="title" content="На Украине стартовали выборы в Верховную раду" />

нам же, нужен именно текст "На Украине стартовали выборы в Верховную раду" расположенный между кавычками внутри этого тега.

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

Кроме того в регулярных выражениях есть такая конструкция вида: .*?

Это конструкция вбирает (поглощает) в себя любое кол-во символов вплоть до встречи со следующим символом после нее. Т.е. к примеру выражение вида: .*?b — вернет все слова оканчивающие буквой b или же внутри которых есть буква b. Попробуем применить эту конструкцию к нашему выражению:

<meta name="title" content="(.*?)"

Скопируем это выражение в поле Шаблон заголовка, нажмем кнопку Применить и снова кнопку Тест импорта.

Видим, что WPGrabber теперь находит правильные заголовки:

Изображение

7) Следующим важным этапом является поиск основного текста страницы.

Для поиска текста необходимо задать два параметра ленты: Начальная точка полного текста и Конечная точка полного текста. Снова переходим на страницу любой новости. К примеру, той же: https://top.rbc.ru/politics/26/10/2014/5 ... 6019aaeb46

Изображение

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

Важной задачей правильного определения границ текста является нахождение уникальных частей HTML-кода или любых других конструкций (части текста и т.д.) до и после полного текста новости.

Итак, находим начальную точку текста:

Изображение

Перед началом текста "Внеочередные выборы Верховной рады Украины проходят при усиленных мерах безопасности. Сколько выберут депутатов, зависит" мы видим тег <div class="article__overview__text">.

Итак, вставляем в поле Начальная точка полного текста строку:

<div class="article__overview__text">

Далее находим конец текста новости. Для этого также можно воспользоваться поиском по словам в последнем предложении текст новости:

Изображение

и в коде:

Изображение

Итак, в поле Конечная точка полного текста можно вставить:

<div class="article__photoreport">
Главная часть любого оружия, есть голова его владельца. Заказ лент WPGrabber

cell1983
Активный участник
Сообщения: 39
Зарегистрирован: 13 дек 2015, 17:49

Re: Пример настройки импорта новостей с сайта top.rbc.ru

Сообщение cell1983 » 19 дек 2015, 19:33

У кого нибудь получилось настроить по этому уроку?

cell1983
Активный участник
Сообщения: 39
Зарегистрирован: 13 дек 2015, 17:49

Re: Пример настройки импорта новостей с сайта top.rbc.ru

Сообщение cell1983 » 20 дек 2015, 13:31

На конец то получилось, то с титлом проблемы были, то с полным текстом. В итоге у вас выявил ошибочку в титле, а именно <meta name="title" content="(.*?)" /> после последней кавычки надо убрать пробел <meta name="title" content="(.*?)"/>. А с текстом не всегда нужно выписывать ближний тег к тексту, бывает, что в теге ещё один тег и оба они ещё в одном теге и именно открывающий и закрывающий эти теги тег, нужно как раз вписывать :) Всё понятно я надеюсь :)

WPGrabber
Администратор
Сообщения: 135
Зарегистрирован: 24 ноя 2015, 22:09
Откуда: СССР
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: Пример настройки импорта новостей с сайта top.rbc.ru

Сообщение WPGrabber » 20 дек 2015, 13:50

Урок старый, еще с сайта wpgrabber ru и служит только для примера.
А по сути после вторых ковычек вообще ни чего не нужно <meta name="title" content="(.*?)"

Аватара пользователя
Admin
Администратор
Сообщения: 578
Зарегистрирован: 22 ноя 2015, 12:18
Откуда: СССР
Благодарил (а): 48 раз
Поблагодарили: 20 раз
Контактная информация:

Re: Пример настройки импорта новостей с сайта top.rbc.ru

Сообщение Admin » 28 янв 2016, 20:51

Подправил, добавил картинки для наглядности настройки.
Главная часть любого оружия, есть голова его владельца. Заказ лент WPGrabber

cell1983
Активный участник
Сообщения: 39
Зарегистрирован: 13 дек 2015, 17:49

Re: Пример настройки импорта новостей с сайта top.rbc.ru

Сообщение cell1983 » 21 май 2016, 14:29

Спасибо! Просмотрел урок ещё раз, всё конечно так запутано может показаться новичку, но методом тыка и ошибок приходит понимание, простоты.

Аватара пользователя
Lex
Новичок
Сообщения: 4
Зарегистрирован: 19 фев 2019, 06:56

Re: Пример настройки импорта новостей с сайта top.rbc.ru

Сообщение Lex » 19 фев 2019, 07:07

cell1983 видимо накололся уже на этот rbc.ru, судя по теме, что он вчера создал.

РБК у себя на сайте очень однозначно пишет:

---
Правила использования материалов интернет-сайта холдинга РБК
Использование материалов сайта разрешено только с письменного разрешения АО «РОСБИЗНЕСКОНСАЛТИНГ» или соответствующего правообладателя. Вы можете задать свой вопрос по адресу [email protected].

При любом использовании материалов сайта в сети Интернет, как на возмездной, так и на безвозмездной основе, пользователь обязан указать источник в виде гиперссылки на сайт www.rbc.ru.

Цитирование материалов сайта допускается безвозмездно в объеме, оправданном целью цитирования, при этом ссылка на источник должна содержать указание на «РБК» и являться гиперссылкой на сайт www.rbc.ru или на страницу конкретного материала с rbc.ru.

Использование материалов сайта в соответствии с п.3 части 1 статьи 1274 Гражданского кодекса Российской Федерации без разрешения АО «РОСБИЗНЕСКОНСАЛТИНГ» запрещается.

Запрещается автоматизированное извлечение информации сайта любыми сервисами без официального разрешения АО «РОСБИЗНЕСКОНСАЛТИНГ».
---

Хотя лично я видел несколько очень сильных новостных сайтов, откуда ни одной исходящей ссылки на доноров нет. Как живут - непонятно. Может просто они настолько толстые и юристы у них настолько умные, что просто договариваются с донорами.

Fenix
Участник
Сообщения: 17
Зарегистрирован: 23 ноя 2015, 21:08
Благодарил (а): 5 раз

Re: Пример настройки импорта новостей с сайта top.rbc.ru

Сообщение Fenix » 25 фев 2019, 17:22

А что вам стоит сделать ссылку на источник?

Аватара пользователя
Admin
Администратор
Сообщения: 578
Зарегистрирован: 22 ноя 2015, 12:18
Откуда: СССР
Благодарил (а): 48 раз
Поблагодарили: 20 раз
Контактная информация:

Re: Пример настройки импорта новостей с сайта top.rbc.ru

Сообщение Admin » 25 фев 2019, 19:52

Lex писал(а):
19 фев 2019, 07:07
cell1983 видимо накололся уже на этот rbc.ru, судя по теме, что он вчера создал.
Это же просто его вопрос, просто хочет услышать, как действовать в такой ситуации.
:lol: :lol: :lol:
Никто с вами судится не будет, в худшем случае попросят удалить статью с сайта, в лучшем случае поставить ссылку на источник.
Главная часть любого оружия, есть голова его владельца. Заказ лент WPGrabber

Ответить