Вступление
Таки да, я созрел для запиливания нового обновления к своему парсеру. К сожалению предыдущая версия для пользователей оказалась не такой дружелюбной, как я бы того хотел. И потому я долго-долго думал над реализацией и в итоге таки написал ее. Представляю вам альтернативный режим работы парсера, а именно — парсинг по jquery селекторам.
Сегодня я постараюсь осветить этот режим более подробно, дабы читатель смог вникнуть во все аспекты работы с плагином.
Описание обновления
Для начала посмотрим на измененный парсер ссылок. Теперь в нем имеется два режима, старый и новый:
Старый режим это парсинг по границам, он никуда не делся, просто переключите флажок и он появится перед вами.
Так-же, как вы видите, имеется возможность выбрать случайную категорию из списка, таким образом можно перемешивать новости в категориях.
Что же касательно самого режима, то вот он:
Первые два селектора отвечают, за заголовок будущего материала и его содержимое. Не беспокойтесь, все картинки которые находятся в содержимом материала, по возможности, разуемеется, будут скачаны к вам на сервер и добавлены в media библиотеку.
Дальше идет фильтрация содержимого от ненужных блоков:
Как вы видите фильтровать блоки можно по регулярным выражениям или по селекторам, это опять-же, зависит от того что вам удобнее и подходит под ситуацию.
Ко всему прочему имеется и встроенный yandex переводчик:
В качестве приятного дополнения был добавлен так-же загрузчик файлов со страниц. Работает он только! для ссылок с атрибутом href, так что будьте внимательны:
Ну и в качестве своеобразного заключения давайте спарсим какой-нибудь сайт с использованием нового режима и демонстрацией всех возможностей.
Установка обновления
К сожалению при внесении правок понадобилось изменить базу данных парсера, так что теперь, если вы использовали старую версию парсера, вам понадобится выполнить несколько шагов для его активации. Во первых скачайте с этой страницы последнюю версию плагина. Сохраните ту версию плагина, которая у вас работает в данный момент, после чего распакуйте с заменой файлов новую версию плагина.
Теперь перейдите в админку WordPress -> Плагины и там сначала деактивируйте, а потом активируйте aftparser:
Демонстрация работы
Давайте в качестве демонстрации спарсим абсолютно любой сайт женской тематики. И так… что мне приходит на ум в данном случае… пусть это будет… да тематика не такая уж простая для мужчины, однако крайне выгодная с точки зрения размещения рекламы и прочих ништяков по причине плохой технической подкованности прекрасной половины человечества.
И так берем мы вот этот сайт из топа — womenparadise.ru
Разумеется я выкладываю вам тут только демонстрацию работы, сам я использовать материалы с этого сайта нигде не собираюсь просто потому что мне и так некогда. Короче воровать контент или нет решать сугубо вам, я бы советовал вам переводить его на украинский тогда это уже будет не такой наглой кражей, скажем так. И парсить сайты не из топа, которые там и так крайне прочно сидят, а с днища ебаного. Я вот щас из топа беру, так что толку от моих действий никакого не будет даже если я выложу такое в интернет.
Начнем со сбора ссылок, мне много не надо штук 100 хватит за глаза для демонстрации.
Тыкаем старт и останавливаем в нужный момент.
Ну вот вы видите, что ссылок у меня собралось 203, но я ждал секунд 20 от силы, теперь надо всю эту хрень отфильтровать. Для этого просто берем и открываем простой фильтр. Ссылки на полноценные посты у нас всегда оканчиваются на .html так что мы возьмем и отфильтруем только те строки где есть .html
Отлично, теперь можно переходить к настройке границ. Если вы до этого хотя-бы мельком, немного, работали с jquery вам будет все очевидно и крайне просто, но если это не так… сейчас все разъясню.
Открываем любой пост и ищем его заголовок, в данно случае это будет название нового материала и у нас тоже!
Тут у нас просто h1 поэтому селектором заголовка будет h1.
Указываем:
Теперь так-же делаем с содержимым материала.
В данном случае мы имеем блок td и class=»news», что в виде селектора будет td.news
Теперь тестируем:
Однако можно пойти по другому пути и, например, подсчитать блоки tr до блока с постом после чего выбрать тем блок td (это для продвинутых). Давайте сделаем и так тоже, на всякий случай.
Как мы видим dom структура документа состоит из таблицы.
Где верхний блок имеет id=»dle-content». Будем от него «плясать». В итоге получается:
#dle-content table tbody tr
Блоков tr у нас много, поэтому подсчитаем каким по счету идет блок контента.
Итого: шестым. Внутри блока tr еще есть один блок td в котором и находится наш материал. Итоговое выражение выйдет таким:
#dle-content table tbody tr[6] td
указываем его как селектор контента
и тестируем
Как вы видите результаты совпадают. Короче говоря есть масса путей, выбирайте свой и делайте.
Теги скриптов удаляются, мусор по возможности удаляется, в будущем чистка от мусора будет дляменя приортитетна, а пока используйте замену. Например те кто внимательно смотрел тест заметили первый блок содержащий <div> </div> — эта хрень, что логично, мне не нужна.
Давайте ее уберем. Для этого указываем такое регулярное выражение:
<div>\s*<\/div>
в соответствующем поле.
После тестирования блок пропадает.
Отлично, теперь можно просто взять и спарсить материалы. Или сохранить их для отложенного парсинга, тут ничего не изменилось. Но я предпочитаю спарсить и посмотреть на результат.
Вот собственно материалы. Они получились ОЧЕНЬ длинные, чтобы вы понимали, я приложу только часть скрина:
На этом, собственно, все. Используйте парсер с умом. Надеюсь с этими правками у вас все будет работать.
парсинг по jquery селекторам — сомневаюсь, что стало «более дружелюбно» для *масс*
Ты ещё жив, а что так пишешь редко?
а о чем писать то? Когда обновления делаю — пишу. А больше писать и не о чем, ну может в ближайшие дни еще пару постов накатаю, чо бы и нет)
Спасибо-) Даже почти все понял в коде
xpath бы еще прикрутить )
боюсь люди не разберутся….
Есть проблема!
Пишет:
Ошибка сохранения!
Ошибка!
[«error»,»\u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f!»]
Ошибка сохранения. Видимо у вас проблеммы с базой данных, вот, почитайте кк обновлять: http://aftamat4ik.ru/parser-po-selektoram/#toc—22
Здравствуйте. Вставляю ссылку в граббер ссылок, нажимаю старт, выпадает окно — «ждите…», и ничего не происходит. В чём может быть косяк?
не знаю, возможно на вашем сервере парсер не работает просто(он на бесплатных хостингах не работает, к сожалению), а может просто страница с которйо вы патаетесь собрать данные — это ajax страница. Или просто регулярка не рабеотает.
много причин может быть.
что за страница?
С ваших примеров — женский сайт, и жж про медицину
только что проверил — http://take.ms/wmfd8 все работает.
Попробуйте запустить парсер на локальной машине у себя, например, используя OpenServer и там попробовать собрать ссылки.
А можно как-то сразу задать область для парсинга? Было бы удобно, скажем, сразу вставить ссылку не на весь сайт, а на раздел, допустим: сайт.ру/новости/политика/ — и парсер проходит только по этому разделу. Просто сейчас, если сайт более-менее крупный, слишком долго ждать результатов, потом еще и фильтровать.
там-же есть фильтры ссылок. соберите ссылки и отфильтруйте те, в которых есть /новости и /политика
Ну вот я об этом и говорю, сбор ссылок занимает много времени. У меня уже полтора часа собирает 🙂 С маленьких сайтов наверное быстрее.
Смотрите, было бы логично: собрал ссылки только с определенного раздела = повесил их в определенную категорию.
а, нет, это не возможно в данный момент, к сожалению
Плагин не активируется. Подскажите, из-за чего может выдаваться такое сообщение https://yadi.sk/d/29JPkZaD3KiQEB
у вас какая версия php? в любом случае ошибка исправлена, скачайте плагин заново.
Подскажите, а какой путь поставить на загрузку картинок для Вордпресс? С указанным селектором для картинок, у меня посты без них.. И нет анонсов.
если картинки не скачиваются, значит парсер не может их скачать. Думаю, вам следует проанализировать html код сайта-донора используя браузер хром, и выяснить, что в тегах
этого сайта «выходит за рамки нормального». После чего в макросе исправить, используя php.
То-же самое относится и к анонсам. Анонсы надо создавать вручную, плагин автоматически не умеет их вставлять просто потому, что были случаи, когда тег more этого самого анонса вставлялся не в текст материала, а, например, в середину другого тега. Что ломало разметку на главной странице сайта. Руками делайте, короче.
подскажите, может както настроить чтоб парсились последние актуальные новости, а то у меня заливает 4, 5 давние новости
разбирайтесь, смотрите в каком блоке у вас последние новости публикуются
Подскажите, пожалуйста, возможно ли отключить скачивание изображений при парсинге по селекторам?
нет, нельзя отключить. При парсинге по границам можно.
У меня версия WP 4.8 Парсер загрузить не получается. Очень долго длится загрузка, затем просто блокируется доступ к сайту. Как решить эту проблему?
PS
Вернее не блокируется, а сбрасывается соединенияе
распаковать парсер в папку сайта /wp-content/plugins вручную
После установки возникла ошибка.
Parse error: syntax error, unexpected …\plugins\aftparser\class\parsersListTable.php on line 219 Подскажи, как ее исправить или в чем проблема?
в файле class\parserListTable закомментировать это — https://monosnap.com/file/gIKgdN10qMB7tv3AaqacOTSNg0M8zm.png так http://take.ms/CaxwX
такая же беда, закоментировал, не спасло… тоже самое…
Приветствую! Перепробовал многое, но решить так и не получилось
Ошибка!
Селектор заголовка не указан!
код донора
some_text
в поле «Селектор названия: *» указывал .pageContentSection h1 и просто h1, получаю ошибку.
Подскажете, в чем причина?
в том что парсер не находит этот элемент на странице. А возможн оу ва просто php 5.3 версии которая давно устарела.
Благодарен, за быстрый ответ!
версия пыха 7.0
донор [скрыто]
на странице еще есть p.name
по нему тоже не хочет искать
все отлично парсится и работает — http://take.ms/9Tu7k
вот настройки — http://take.ms/51kXg
Огромнейшее СПАСИБО!
не так писал конструкцию
обрезало код
див.pageContentSection > h1
aftamat4ik, не подскажешь как исправить ошибку update_option( «aft_proxy_list» ); ?
Установил на чистый WP и при тестировании получаю (вне зависимости от выбора режима выборки):
Warning: Missing argument 2 for update_option(), called in /wp-content/plugins/aftparser/async/site_parser_proc.php on line 404 and defined in /wp-includes/option.php on line 285
все поправил, скачайте новую версию парсера
А GIF изображения скрипт может скачивать?
А как несчет woocomerce?
Забьем на посты
никак, воокоммерце имеет отдельный формат записей, который мало того что меняется постоянно, так еще и в разных шаблонах выглядит по разному.
на одно из сайтов все же он работает ( только старая версия) — я так понял я не правильно его обновил — просто поставил новую версию ( удалив папку с плагином)
теперь снес и папку и в базе часть wp_aft_parser . и поставил новый плагин но он все же не работает
как мне и что снести и по новой поставить чтоб заработало? может где то что то недоудалил
или где старую версию скачать 1.7.0 . она у меня по крайней мере работала
с качайте с сайта где он работает и залейте туда где не работает
Подскажите пожалуйста почему не получается…? Вроде всё сделал как сказано, но по итогу ничего не парсится. При нажатии «Начать парсинг» — пишет «Ошибка добавления материала»
А при нажатии сохранить и тестировать вот что:
[————- проход_0—————]
[title]Ким Чен Ын поразил своим кортежем • Портал Компромат[/title]
[————- /проход_0—————]
очевидно что не задали выборку контента
Этот плагин может парсить сайты с Вебархива? Попробовал на скорую руку парочку, ссылки на страницы собирает, но при парсинге, как и в прошлом посте выдает «Ошибка добавления материала»…
Здравствуйте.
Что-то у меня он не работает. Вернее — после активации, выдаёт ошибку, что сайт не доступен. Версия PHP7,0
php 7.0 может ошибку выдавать попробуйте запустить с версией 5.6
Заголовок и текст статьи парсит отлично, а изображения почему то пропускает. В чём косяк может быть?
версия PHP: 5.6.37
много может быть причин, с картинками всегда есть проблемы
Приветствую! Во-первых, благодарю за плагин!
Интересует вопрос, реально ли автоматическое объединения нескольких спаршеных материалов в одну запись?
нет не реально и технически сложно реализуемо ибо парсер не умеет анализировать являются ли например два материала похожими друг на друга. Объединение всего в кашу не анализируя схожесть материалов как вы понимаете смысла не имеет.
Добрый день. Подскажите плиз как мне сохранить УРЛ — в том виде в котором он парсит, не меняя его. и даже оставлял .html
я к чему?
Взял из вебархива сайт и хочу оставить УРЛ родными