2009-01-14 81 views
9

我想在我的ReadyNas上解析rss訂閱源並下載podcasts,該文件正在全天候運行。如何在shell腳本中解析rss-feeds/xml

所以我想要有一個shell腳本定期檢查飼料和產卵wget下載文件。

什麼是最好的解析方法?

謝謝!

+0

也許我必須補充一點:我的速度很慢,這就是爲什麼我沒有運行我的工作站。 – Oli 2009-01-14 17:48:15

回答

19

有時候,一個簡單的內膽與外殼的標準命令可以爲這個已經足夠了:

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

確保這不會在任何情況下工作,但它足以常不錯。

+1

輝煌。注意事項(帶有polipo_1.0.4.1-1.2的wget_1.13.4-3):如果您還使用代理服務器,則「-c」選項(以繼續中斷下載)可能不起作用。它似乎不斷重試已經完成的文件。 – sourcejedi 2012-11-14 13:29:03

+1

非常優雅。好工作。 – Clarkey 2013-03-26 13:29:47

2

你有權訪問awk嗎?也許你可以使用XMLGawk

0

你可以使用libxml2的xsltproc並編寫一個簡單的xsl樣式表來分析rss並輸出鏈接列表。

1

我已經寫了下面的簡單腳本從亞馬遜S3上下載XML,所以它會用於解析不同類型的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