go语言获取网页连接

使用go语言的版本是1.0.3,golang那个goquery模块需要使用的exp/html死活装不上,后来装上了code.google.com/p/go.net/html,goquery使用还是出错,可能就是exp/html模块版本不对吧,

反正后来找到的exp/html不是那个pkg的位置,以下是go语言获取网页链接的源码:

安装code.google.com/p/go.net/html: go get code.google.com/p/go.net/html

如果说连接time out, 就在机器的hosts文件加上: 74.125.128.138 code.google.com

package main
 
import (
	"fmt"
	"log"
	"strings"
        "time"
	"net/http"
	"io/ioutil"
	"code.google.com/p/go.net/html"
)



func getwangye(url string) string {
    for h:=1;h<4;h++{    
        r, err := http.Get(url)
       if err != nil {
          fmt.Printf("%v\n", err)
            time.Sleep(time.Second * 4)
            continue            
       }
     
       defer r.Body.Close()
 
       body, err:= ioutil.ReadAll(r.Body)
            
       return string(body)
         
     } 
     return "nonono"

}


func getlink(s string) []string{
        var b []string
	
	doc, err := html.Parse(strings.NewReader(s))
	if err != nil {
		log.Fatal(err)
	}
	var f func(*html.Node)
	f = func(n *html.Node) {
		if n.Type == html.ElementNode && n.Data == "a" {
			for _, a := range n.Attr {
				if a.Key == "href" {
					//fmt.Println(a.Val)
                                         b=append(b,a.Val)
					break
				}
			}
		}
		for c := n.FirstChild; c != nil; c = c.NextSibling {
			f(c)
		}
	}
	f(doc)
	// Output:
	// foo
	// /bar/baz
        return b
}



func main() {
    s := getwangye("https://www.lpfrx.com")
    
    d:=getlink(s)
    cc:=len(d)
    for h:=1;h<cc;h++{ 
      fmt.Println(d[h])
      //break
    }
    
    
}

还是那句,go语言的中文资料貌似很少,搞这个go语言获取网页连接,另我头痛了很久呢

在树莓派下的linux环境和windows 7 64位环境通过,还有的就是,原来pkg可以复制过去就可以用了,

因为windows 7下使用: go get code.google.com/p/go.net/html, 要装很多东西,我在linux环境下把它复制到windows去就可以用了.

关于无聊人

一个无聊人而已
此条目发表在技术生活分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注