早期抓取数据都是偷懒用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写个简单的例子。。
XML/HTML代码
- 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);
- }
- }
- })