早期抓取数据都是偷懒用phpquery。用起来真心方便啊。刷刷刷的数据就取回来了。毕竟phpQuery还是相当模拟了jQuery的操作的。但现在在用go。怎么办?

其实go也有类似的工具,比如goquery,但使用起来确实不如phpQuery方便。举个小例子说明一下吧:

获取li数据中的第二个数据,那么jquery一般是这样写:$('li:eq(1)'),phpQuery呢。基本上也这样。pq('li:eq(1)'),但到了goquery就不能这样写了。我开始这样写的时候一直取不到数据。后来 才发现。。原来goquery必须得这样写:doc.Find("li").Eq(1)。虽然phpquery等也有类似方法,但如果放在Find里面不就好了嘛。真是的

OK写个简单的例子。。

var doc * goquery.Document
var e error
if doc, e = goquery.NewDocument(PROXY_FOREIGN_PAGE_URL); e != nil {
ConsoleLog(e)
return ;
}
doc.Find("tr ").Each(func(i int, ss * goquery.Selection) {
s := *ss.Find("td");
if s.Length() == 6 {
port , _ := strconv.Atoi(s.Eq(1).Text());
if port > 1 {
var pInfo ProxyInfo
pInfo.Ip = IpString(s.Eq(0).Text());
pInfo.Port = PortString(s.Eq(1).Text());
ProxyInfoLists = append(ProxyInfoLists , pInfo);
}

}
})
goquery的项目地址是:github.com/PuerkitoBio/goquery