Пример импорта статей с forexlive.com для WPGrabber

1) Создаем новую ленту в настройках плагина WPGrabber для Wordpress.

В строке «Наименование ленты» можно записать любое имя нашей настройки импорта, я обычно пишу URL без протокола, например: «forexlive.com/technical-analysis».




 2) Тип ленты устанавливаем  html.

3) «URL индексной страницы» — адрес раздела сайта, с которого будем собирать ссылки на копируемый контент.
У нас этот URL: «http://www.forexlive.com/technical-analysis» 

4) Обязательно надо установить параметр  «Кодировка HTML-страницы». Кодировку страницы сайта мы ищем в исходном HTML-коде. Нажимаем сочетание клавиш  Ctrl + U или кликнуть  правой кнопкой мыши и выбрать пункт «Просмотр кода страницы» (для Google Chrome), или «Исследовать элемент» (для Mozilla Firefox).




Ищите в исходном html-коде страницы подобную строку:
<meta http-equiv=«Content-Type» content=«text/html; charset=«ЗДЕСЬ КОДИРОВКА» />

Пользуйтесь поиском браузера (Ctrl + F) и вводите слово charset.


У нас это:  <meta charset=«UTF-8» />
Соответственно устанавливаем в поле «Кодировка HTML-страницы» кодировку  UTF-8

5) Следующее поле «Шаблон ссылок», с помощью которого идет сбор ссылок на статьи для скрапинга (граббинга), для импорта на свой сайт. Для правильного заполнения параметра «Шаблон ссылок», в WPGrabber необходимо определить вид ссылок в коде страницы.
Для этого берём любой заголовок. У нас первый заголовок контента носит название 

Жмём «Просмотреть код»


На скриншоте выше видим URL-адрес данной ссылки в теге  A. Мы видим, что страница статьи под заголовком «Forex technical analysis: USDJPY moves to the red on the day.» расположена по адресу URL: //www.forexlive.com/technical-analysis/!/forex-technical-analysis-usdjpy-moves-to-the-red-on-the-day-20171116

Рассмотрим структуру этого URL-адреса:
//www.forexlive.com/technical-analysis/!/ некоторое количество букв и знаков

Важно то, что эта часть URL фиксированная:
//www.forexlive.com/technical-analysis/!/

Т.к. эта часть URL остается постоянной для всех других ссылок, идущих на странице.

Рассмотрим остальные ссылки:

  • http://www.forexlive.com/technical-analysis/!/the-us-dollar-is-a-little-lower-after-the-data-20171116
  • http://www.forexlive.com/technical-analysis/!/the-gbp-is-the-strongest-and-the-nzd-is-the-weakest-20171116
  • http://www.forexlive.com/technical-analysis/!/forex-technical-analysis-eurusd-waffling-but-may-be-trying-to-base-more-20171116
  • http://www.forexlive.com/technical-analysis/!/a-snapshot-of-the-winners-and-losers-so-far-today-20171116
  • http://www.forexlive.com/technical-analysis/!/forex-technical-analysis-gbpusd-hanging-between-ma-levels-20171116
  • http://www.forexlive.com/technical-analysis/!/forex-technical-analysis-eurgbp-returns-back-to-support-20171115
  • http://www.forexlive.com/technical-analysis/!/eia-natural-gas-storage-change-18b-20171116
  • http://www.forexlive.com/technical-analysis/!/stocks-snap-back-after-fall-over-the-last-few-day-decline-20171116
  • http://www.forexlive.com/technical-analysis/!/activity-has-slowed-down-in-ny-afternoon-trading-20171115
  • http://www.forexlive.com/technical-analysis/!/forex-technical-analysis-gbpjpy-caught-in-the-down-and-up-rinse-cycle-20171115
  • http://www.forexlive.com/technical-analysis/!/forex-technical-analysis-usdjpy-tests-200-bar-ma-on-4-hour-chart-20171115
  • http://www.forexlive.com/technical-analysis/!/be-aware-key-trend-line-tested-in-the-audusd-20171115
  • http://www.forexlive.com/technical-analysis/!/eurusd-moves-below-intraday-ma-20171115
  • http://www.forexlive.com/technical-analysis/!/usdjpy-following-stocks-lower-20171115
  • http://www.forexlive.com/technical-analysis/!/us-major-indices-open-lower-20171115
  • http://www.forexlive.com/technical-analysis/!/usdcad-looks-toward-50-midpoint-target-20171115


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

Давайте поймем логику описания шаблона ссылок:
У нас меняющиеся значения это: the-us-dollar-is-a-little-lower-after-the-data-20171116usdcad-looks-toward-50-midpoint-target-20171115 и stocks-snap-back-after-fall-over-the-last-few-day-decline-20171116
У этих значений разное количество символов в длину
Они возможно могут включать в себя цифры
Не может быть только символа пробела, т.к. в URL они запрещены.
Наши URL: forex-technical-analysis-gbpusd-hanging-between-ma-levels-20171116usdcad-looks-toward-50-midpoint-target-20171115 и прочие состоят из многих символов (букв, цифр и символов дефис).

Чтобы правильно работал плагин WPgrabber нам нужны только буквы, цифры и символ «-»

 Соответствующее регулярное выражение может выглядеть так: technical-analysis/!/[\w\-]*

[] - обозначает класс символов,
\w - Буквенный или цифровой символ 
или знак подчёркивания
* - Квантификатор после символа, символьного класса или группы определяет, сколько раз предшествующее выражение может встречаться. 


Часто используется последовательность .* для обозначения любого количества любых символов между двумя частями регулярного выражения.

Вставьте этот technical-analysis/!/[\w\-]* код в Шаблон ссылок, жмите «Применить» и «Тест импорта» 

и плагин выдаст 25 ссылок!

Заходим на страницу категории статей для парсинга нашего сайта и считаем количество ссылок на копируемые статьи. 
Так мы проверяем настройки шаблона для ссылок.


Когда при тесте импорта записей в WordPress в результате видим сообщение «Найдено ссылок: 0» , то это говорит нам о том, что допущена ошибка в написании шаблона ссылок WPGrabber. 
Проверяйте все настройки заново.

Есть прекрасная страница «Шпаргалка по регулярным выражениям»

а также онлайн тестер https://regex101.com/
Более основательно - книга Джеффри Фридла «Регулярные выражения»

Делаем тестовый импорт ленты и получаем результат со следующей ошибкой:

«Материал не будет сохранен по причине отсутствия в нем контента»

Теперь надо написать правила для правильного импорта заголовка и текста записей WordPress. Заголовок при импорте ленты будет заголовком создаваемых в WordPress записей или постов. Перейдем на сайте на саму страницу статьи: 
http://www.forexlive.com/technical-analysis/!/forex-technical-analysis-usdjpy-moves-to-the-red-on-the-day-20171116

Открываем ее исходный код и ищем наш заголовок:


Можно взять из тайтла:
<title>Forex technical analysis: USDJPY moves to the red on the day. </title>



или из <meta property="og:title" content="Forex technical analysis: USDJPY moves to the red on the day. " />

Я и взял этот вариант
Чтобы обозначить выборку определенной части текста из строки используются символы круглых скобок ( ) и .*?

Этот код будет включать в себя любые символы пока не дойдет до  следующего символа после нее, поэтому делаем шаблон заголовков таким:
<meta property="og:title" content="(.*?)" /> 

Вставляем эту настройку в поле «Шаблон заголовка», нажмем кнопку «Применить» и кнопку «Тест импорта».
В результате WPGrabber нашёл нужные нам заголовки контента:


Как заполнять поле «Полный текст» в настройках плагина WPGraber?
Нужно установить параметры ленты «Начальная точка полного текста» и «Конечная точка полного текста».

Смотрим исходный код копируемого поста.
Находим начальную точку текста:
<article id=".*?" data-art-id=".*?">

Далее находим конец текста статьи в коде:

В строке «Конечная точка полного текста» вставляем такой код:
</article>

Есть проблема:


Для этого используем вкладку «Обработка».
И включаем «дополнительные шаблоны обработки»

Адрес картинок указан без протокола, начинается с //
и в этом проблема.
Пишем «Шаблон поиска» для картинок:
|<img[^>]+src="//(.*?)"|is

«Шаблон замены»:
<img src="http://$1"




Удаляем автора и надпись share:
|<h1 id=(.*?)</h1>|is
|<div class="tahub-h3-sep"(.*?)</div>|is
|<div class="col-md-2 col-sm-2 col-xs-2">(.*?)</div>|is

Жмем кнопку «Применить» и кнопку «Тест импорта»



Смотрим, что всё нормально.
Поздравляю мы настроили ленту для импорта. 
Скачать эту ленту можно здесь:

В случае возникновения вопросов или сложностей в настройках пишите. Telegram: @servakov



Комментарии

Популярные сообщения из этого блога

Настройка лент WPGrabber

Парсинг в WPGrabber с авторизацией