使用goquery模块代替正则匹配的方式获取数据。

来源:15-8 用户信息解析器(上)

qq_腾讯nickxie_0

2018-10-08

resp, err := http.Get(“http://album.zhenai.com/u/105929580”)

reader := bufio.NewReader(resp.Body)
document, err := goquery.NewDocumentFromReader(reader)
if err != err {
	fmt.Println(err)
	return
}

nicknane := document.Find(".brief-name .name").Text()
var userinfo []interface{}
document.Find(".brief-table td").Each(func(i int, selection *goquery.Selection) {
	d := selection.Text()
	userinfo= append(userinfo,ConvertToString(d,"gbk","utf-8"))

})
document.Find(".floor-table td").Each(func(i int, selection *goquery.Selection) {
	d := selection.Text()
	userinfo= append(userinfo,ConvertToString(d,"gbk","utf-8"))

})

fmt.Println(ConvertToString(nicknane,"gbk","utf-8"))
for i,v := range userinfo {
	fmt.Println(i,v)
}

通过goquery模块使用css选择器获取数据,感觉比正则表达式更简洁清晰?

写回答

1回答

ccmouse

2018-10-09

是的。我只是因为课程的通用性而选择了正则表达式。同学的goquery写法,如果熟悉的话的确对于这个特定的需求是更好的。

0
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程