我有一個表,我想解析的HTML。類似於以下內容 http://sprunge.us/IJUC 但是,我不確定解析出這些信息的好方法。我見過一些html解析器,但是這些解析器似乎都要求所有東西都有一個特殊的標籤供你解析,比如抓取信息;然而,我的大部分信息都在<td></td>
去解析HTML表
有沒有人有解析這些信息的建議?
我有一個表,我想解析的HTML。類似於以下內容 http://sprunge.us/IJUC 但是,我不確定解析出這些信息的好方法。我見過一些html解析器,但是這些解析器似乎都要求所有東西都有一個特殊的標籤供你解析,比如抓取信息;然而,我的大部分信息都在<td></td>
去解析HTML表
有沒有人有解析這些信息的建議?
無恥插頭:我goquery庫。這是帶到Go的jQuery語法(需要Go的experimental html package,請參閱庫的README中的說明)。
所以,你可以做這樣的事情(假設你的HTML文檔加載文檔,一個*goquery.Document
):
doc.Find("td").Each(func (i int, s *goquery.Selection) {
fmt.Printf("Content of cell %d: %s\n", i, s.Text())
})
編輯:在本例中更改doc.Root.Find
到doc.Find
因爲goquery文檔現在是一個選擇太(新的V0.2/master分支)
如果精心形成你的HTML,您可以使用內置的XML解析器:
我看到的一切使用XML包就假設你有一個像
@sorcix格式良好的HTML不是XML。你在混淆HTML和XHTML嗎? –
您還可能有興趣在圍棋的實驗性HTML解析器: https://code.google.com/p/go.net/html
包defini根據godoc重刑:
包裝HTML實現了兼容HTML5的標記生成器和分析器
我沒有用它自己,但它似乎很直接:
解析通過使用io.Reader調用Parse來完成,該解析器將解析樹(文檔元素)的 根作爲* Node返回。主叫方負責確保Reader提供UTF-8編碼的HTML編碼。
go get code.google.com/p/go.net/html
import "code.google.com/p/go.net/html"
doc, err := html.Parse(r)
這不是任何當前版本的一部分,但如果你從源安裝或使用golang尖端的Ubuntu容易回購可以使用。
編輯:你也可以使用這裏的實驗圍棋包以下鏡子:https://github.com/kless/go-exp
go get github.com/kless/go-exp/html
import (
"github.com/kless/go-exp/html"
)
有沒有任何跡象表明這個軟件包什麼時候會升級到標準庫? – djhworld
實驗性HTML解析器已移至https://code.google.com/p/go/source/browse?repo=net。至於什麼時候能夠推廣,維護者在12月8日表示,它通過Webkit測試套件非常接近,但在API被凍結之前不會被推廣,而且他還沒有準備好。 – spiffytech
不錯的包,但林有使用它的問題。我進口它,但編譯器告訴我,Document和NewDocument未定義? – Eno
你可以用GitHub上的代碼摘錄以及你安裝它的步驟來解決問題嗎?我會看看。 – mna
我是新來的,所以很可能我做錯了什麼。我在Mac和Ive使用Homebrew安裝Go(1.0.3)。運行「go get github.com/PuerkitoBio/goquery」似乎已經在/usr/local//Cellar/go/1.0.3/src/pkg/github.com/PuerkitoBio/goquery上安裝了該軟件包。 – Eno