加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Go语言通过http抓取网页的方法

发布时间:2016-12-04 12:05:04 所属栏目:教程 来源:站长网
导读:本文实例讲述了Go语言通过http抓取网页的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下: package main import ( nbsp;"fmt" nbsp;"log" nbsp;"net/http" nbsp;"net/url" nbsp;"io/ioutil" ) //指定代理ip func getTransportFieldURL(

本文实例讲述了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语言程序设计有所帮助。

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读