再次大家好,我很抱歉這么快就問了另一個問題,但最近 Go 似乎是一件又一件的事情。我有一個可用的網頁抓取工具(感謝大家的幫助),它可以從這個 wiki 頁面獲取我想要的所有信息:http : //monsterhunter.wikia.com/wiki/MH4U : _Item_List然后它顯示我想要的一切,沒有打嗝。但是,當我寫入 .txt 文件時,我收到一條錯誤消息:“0 write mh4u.txt:句柄無效”這是我當前的代碼供參考:package mainimport ( "fmt" "log" "github.com/PuerkitoBio/goquery" "os" "io")func main() { filename := "mh4u.txt" file, err := os.Create(filename) if err!= nil { fmt.Println(err) } doc, err := goquery.NewDocument("http://www.ign.com/wikis/monster-hunter-4/Items") if err != nil { log.Fatal(err) } doc.Find("tbody").Each(func(i int, s *goquery.Selection) { s.Find("td").Each(func(j int, s2 *goquery.Selection) { if s3 := s2.Find("img"); s3 != nil && s3.Length() > 0 { return } fmt.Printf(s2.Text()) n, err := io.WriteString(file, s2.Text()) if err != nil { fmt.Println(n, err) } }) file.Close() })}用其他網站測試這段代碼讓我相信可能有一些隱藏的字符給作者帶來了一些問題,但這是我唯一能猜到的。非常感謝您提供的任何建議/提示/解決方案!
1 回答

縹緲止盈
TA貢獻2041條經驗 獲得超4個贊
你file.Close()在一個閉包內調用。如果doc.Find("tbody").Each被多次調用,您最終將嘗試寫入一個關閉的文件。您應該在創建文件后立即推遲關閉文件:
file, err := os.Create(filename)
if err != nil {
log.Fatal(err)
}
defer file.Close()
- 1 回答
- 0 關注
- 355 瀏覽
添加回答
舉報
0/150
提交
取消