通过bash从html中提取信息
我正在尝试编写一个可以从大型html文件中提取信息的bash脚本。我需要这个每天早上自动下载最新的报纸:)。 要下载最新的报纸,我必须知道它的ID。为了得到它,我必须解析指向它的链接。 我设法提取线,将保存该ID使用awk与通过bash从html中提取信息
awk '/show.php\?id=/' index.html
,并得到
<a href="show.php?id=914826">Latest Newspaper</a>
所以我需要什么了这条线是“914826”。这就是我卡住的地方......我不认为我可以使用awk来提取不是整行,而是一个片段。
期待您的回答。 由于提前, 西蒙
这完全awk
命令应该工作。对于匹配正则表达式的行,分割为=
和"
。拆分像这样在你的榜样行:
- 第一场将是:
<a href=
- 第二场:[空白]
- 第三场:
show.php?id
- 第四场:
914826
- 和第五个领域:
>Latest Newspaper</a>
所以打印第四个(arr[4]
):
awk '
/show.php\?id=/ {
split($0, arr, /[="]/);
print arr[4]
}
' index.html
简单得多:'awk -F'[=“]''/show.php\?id=/ {print $ 4}'index.html' AWK为您免费提供第一个分割。 –
使用grep
:
grep -o 'id=[0-9]*'
例子:
$ echo '<a href="show.php?id=914826">Latest Newspaper</a>' | grep -o 'id=[0-9]*'
id=914826
你可以用Perl做同样或sed的:
$ echo '<a href="show.php?id=914826">Latest Newspaper</a>' | perl -pe 's/.*id=([0-9]*).*/$1/'
914826
我会使用grep方式。非常感谢你。有什么教程可以推荐?作为一名Java开发人员,我发现很难找到有关bash的有用信息 – battlepope
@battlepope http://tldp.org/LDP/Bash-Beginners-Guide/html/ – rush
@battlepope:关于bash的最佳实例:http: //tldp.org/LDP/abs/html/ –
您可以使用XSLT .... –
退房XML2命令,如:http://stackoverflow.com/a/7058658/78602 – hipe