再次大家好,我很抱歉这么快就问了另一个问题,但最近 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 关注
- 330 浏览
添加回答
举报
0/150
提交
取消