Как разобрать rss-feeds / xml в скрипте оболочки - PullRequest
10 голосов
/ 14 января 2009

Я хотел бы проанализировать RSS-каналы и загрузить подкастов на мой ReadyNas, который в любом случае работает 24/7.

Так что я думаю о том, чтобы сценарий оболочки периодически проверял каналы и вызывал wget для загрузки файлов.

Какой самый лучший способ сделать разбор?

Спасибо!

Ответы [ 5 ]

21 голосов
/ 15 января 2009

Иногда для этого может быть достаточно простого однострочника со стандартными командами оболочки:

 wget -q -O- "http://www.rss-specifications.com/rss-podcast.xml" | grep -o '<enclosure url="[^"]*' | grep -o '[^"]*$' | xargs wget -c

Конечно, это работает не во всех случаях, но часто достаточно хорошо.

2 голосов
/ 14 января 2009

У вас есть доступ к awk? Может быть, вы могли бы использовать XMLGawk

1 голос
/ 14 февраля 2013

Я написал следующий простой скрипт для загрузки XML из Amazon S3, поэтому он будет полезен для анализа различных типов XML-файлов:

#!/bin/bash
#
# Download all files from the Amazon feed
#
# Usage:
#  ./dl_amazon_feed_files.sh http://example.s3.amazonaws.com/
# Note: Don't forget about slash at the end
#

wget -qO- "$1" | grep -o '<Key>[^<]*' | grep -o "[^>]*$" | xargs -I% -L1 wget -c "$1%"

Это похоже на @ leo answer .

1 голос
/ 14 января 2009

Я читал о XMLStartlet здесь и там

Но есть ли порт для ReadyNas NV +?

0 голосов
/ 14 января 2009

Вы можете использовать xsltproc из libxml2 и написать простую таблицу стилей xsl, которая анализирует rss и выводит список ссылок.

...