2016-03-22 95 views
-2

我正在使用wget下載HTML頁面並從中提取信息。具體我想把這個:使用命令行從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 

但這並沒有給我想要的結果。

+0

'grep'或一般的正則表達式不來提取標記語言信息的正確工具。有大量的例子如何在互聯網上以正確的方式做到這一點。但是,您還會發現大量使用正則表達式的錯誤示例。我已經說了一些你的問題。我希望這可以讓你的頭腦有點不同於'grep'的解決方案。 – hek2mgl

回答

1

改變grepegrep對於一些更細的正則表達式的能力,你可以這樣做:

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 
+0

沒有我寫的wget沒有做任何事情,它沒有返回任何這就是爲什麼我需要幫助寫它,並有很多不只是4 – bob

+0

任何人都可以請幫忙 – bob

+0

很難說,因爲我不知道你的HTML看起來像什麼。也許對於你的grep:'egrep -e' JNevill