使用命令行从HTML文档中提取信息

时间:2016-03-22 19:13:21

标签: html linux command-line

我使用wget下载HTML页面并从中提取信息。具体来说,我想转此:

<a href="/312728/" title="The 10 Best Goals ever">
<a href="/671921/" title="Golf at its best">
<a href="/371285/" title="Football Legends">
<a href="/576903/" title="Boxing Legends">

进入此并保存为txt文件。

/312728/The 10 Best Goals ever
/671921/Golf at its best
/371285/Football Legends
/576903/Boxing Legends

我试过了:

wget --quiet -O - http://some-site.com | grep -o '<a href="/?/" title="?"> > new.txt

但这并没有给我预期的结果。

1 个答案:

答案 0 :(得分:1)

grep更改为egrep以获得更好的正则表达式能力,您可以执行以下操作:

wget --quiet -O - http://some-site.com | egrep -e '<a href="\/[0-9]*\/" title="[:alnum:]*' 

应返回:

<a href="/312728/" title="The 10 Best Goals ever">
<a href="/671921/" title="Golf at its best">
<a href="/371285/" title="Football Legends">
<a href="/576903/" title="Boxing Legends">

然后,使用awk我们可以通过双引号分隔这些东西并挑选出你想要返回的部分:

wget --quiet -O - http://some-site.com | egrep -e '<a href="\/[0-9]*\/" title="[:alnum:]*'  | awk -F'"' '{print $2$4}'

哪个应该归还:

/312728/The 10 Best Goals ever
/671921/Golf at its best
/371285/Football Legends
/576903/Boxing Legends

您可以将其重定向到这样的文本文件:

wget --quiet -O - http://some-site.com | egrep -e '<a href="\/[0-9]*\/" title="[:alnum:]*'  | awk -F'"' '{print $2$4}' >> mytextfile.txt