Поиск и сбор rss лент

Поиск и сбор rss лент

Минимальная версия A-Parser
1.2
В этой статье будет рассмотрен способ поиска и сбора ссылок на RSS ленты. Решение будет иметь 3 этапа:
  • поиск сайтов в Google по ключевым словам, например, "погода rss"
  • парсинг только внутренних ссылок с наличием в них rss
  • проверка найденных ссылок
В результате должен получиться список ссылок на RSS ленты, например:
https://pogoda.co.il/rss/rss_for_fbtwi.rss
https://pogoda.co.il/rss/rss_for_fbtwi2.rss
https://pogoda.co.il/rss/text_news_today.xml
https://habr.com/en/rss/best/daily/?fl=en
http://digest.subscribe.ru/index.rss
1. Поиск сайтов в Google по ключевым словам

Составляем вполне стандартный пресет на основе SE::Google SE::Google, в результат выводим только домены:

dishm_200218110305.png


Результат:
forum.awd.ru
meteoinfo.ru
www.hmn.ru
pogoda.co.il
www.pogoda.by
www.meteovesti.ru
habr.com
www.gismeteo.by
subscribe.ru
2. Парсим из главных страниц сайтов ссылки и выводим в результат только те, которые содержат rss.

Составляем пресет на базе Net::HTTP Net::HTTP.
Добавляем опцию Good status и выбираем 200 OK.
Выбираем опцию User agent и прописываем юзер-агент любого современного браузера. Это необходимо на тот случай, если сайт не отдает контент при запросе с юзер-агентом IE7, который используется в A-Parser по-умолчанию.
Выбираем функцию Использовать регулярку и применяем к переменной $data - Content data регулярное выражение с флагом ig.
Код:
href="(.+?)"
Добавляем фильтр и применяем его к переменной $links.$i.link. При помощи регулярного выражения
Код:
https?://[^/]*[% query.orig.remove('www\.') %]/.*rss
проверяем чтобы ссылки были внутренние и в результат выводились только ссылки содержащие rss.

gz2do_200218131622.png


Результат:
https://pogoda.co.il/rss/rss_for_fbtwi.rss
https://pogoda.co.il/rss/rss_for_fbtwi2.rss
https://pogoda.co.il/rss/text_news_today.xml
https://habr.com/en/rss/best/daily/?fl=en
http://digest.subscribe.ru/index.rss
https://subscribe.ru/latest.rss
3. Проверка содержимого по найденным ссылкам

Проверяем контент по полученным на 2-м этапе ссылкам, если это действительно rss лента, то выводит в результат ссылку. Проверка происходит по наличию тегов <rss или <?xml. Фильтр применяем к переменной $data - Content data, флаг i и используем регулярку
Код:
<rss|<\??xml
1r2mu_200218134239.png


В итоге получили ссылки на RSS ленты:
https://pogoda.co.il/rss/rss_for_fbtwi.rss
https://pogoda.co.il/rss/rss_for_fbtwi2.rss
https://pogoda.co.il/rss/text_news_today.xml
https://habr.com/en/rss/best/daily/?fl=en
http://digest.subscribe.ru/index.rss
Заключение.
Данный пример можно модифицировать и применять если нужно получить в результат ссылки с определенным значениями, например: наличие формы комментария в коде страницы или поиск кода формы обратной связи.

Готовый пресет Поиск и сбор rss лент можно скачать в Каталоге.
Автор
Support Alex
Просмотры
4
Первый выпуск
Обновление

Рейтинги

0,00 звёзд Оценок: 0

Ещё ресурсы от Support Alex

Назад
Верх