| 本文实例讲述了Go语言通过http抓取网页的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下:package main
 import (
 nbsp;"fmt"
 nbsp;"log"
 nbsp;"net/http"
 nbsp;"net/url"
 nbsp;"io/ioutil"
 )
 //指定代理ip
 func getTransportFieldURL(proxy_addr *string) (transport *http.Transport) {
 nbsp;url_i := url.URL{}
 nbsp;url_proxy, _ := url_i.Parse(*proxy_addr)
 nbsp;transport = http.Transport{Proxy : http.ProxyURL(url_proxy)}
 nbsp;return
 }
 //从环境变量$http_proxy或$HTTP_PROXY中获取HTTP代理地址
 func getTransportFromEnvironment() (transport *http.Transport) {
 nbsp;transport = http.Transport{Proxy : http.ProxyFromEnvironment}
 nbsp;return
 }
 func fetch(url , proxy_addr *string) (html string) {
 nbsp;transport := getTransportFieldURL(proxy_addr)
 nbsp;client := http.Client{Transport : transport}
 nbsp;req, err := http.NewRequest("GET", *url, nil)
 nbsp;if err != nil {
 nbsp;nbsp;log.Fatal(err.Error())
 nbsp;}
 nbsp;resp, err := client.Do(req)
 nbsp;if err != nil {
 nbsp;nbsp;log.Fatal(err.Error())
 nbsp;}
 nbsp;if resp.StatusCode == 200 {
 nbsp;nbsp;robots, err := ioutil.ReadAll(resp.Body);
 nbsp;nbsp;resp.Body.Close()
 nbsp;nbsp;if err != nil {
 nbsp;nbsp;nbsp;log.Fatal(err.Error())
 nbsp;nbsp;}
 nbsp;nbsp;html = string(robots);
 nbsp;} else {
 nbsp;nbsp;html = ""
 nbsp;}
 nbsp;return
 }
 func main() {
 nbsp;proxy_addr := "http://183.221.250.137:80/"
 nbsp;url := "http://www.baidu.com/s#63;wd=ip"
 nbsp;html := fetch(url, proxy_addr)
 nbsp;fmt.Println(html)
 }
 
 希望本文所述对大家的Go语言程序设计有所帮助。 (编辑:源码网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |