Go语言通过http抓取网页的方法
本文实例讲述了Go语言通过http抓取网页的方法。分享给大家供大家参考。具体实现方法如下:
packagemain
import(
"fmt"
"log"
"net/http"
"net/url"
"io/ioutil"
)
//指定代理ip
funcgetTransportFieldURL(proxy_addr*string)(transport*http.Transport){
url_i:=url.URL{}
url_proxy,_:=url_i.Parse(*proxy_addr)
transport=&http.Transport{Proxy:http.ProxyURL(url_proxy)}
return
}
//从环境变量$http_proxy或$HTTP_PROXY中获取HTTP代理地址
funcgetTransportFromEnvironment()(transport*http.Transport){
transport=&http.Transport{Proxy:http.ProxyFromEnvironment}
return
}
funcfetch(url,proxy_addr*string)(htmlstring){
transport:=getTransportFieldURL(proxy_addr)
client:=&http.Client{Transport:transport}
req,err:=http.NewRequest("GET",*url,nil)
iferr!=nil{
log.Fatal(err.Error())
}
resp,err:=client.Do(req)
iferr!=nil{
log.Fatal(err.Error())
}
ifresp.StatusCode==200{
robots,err:=ioutil.ReadAll(resp.Body);
resp.Body.Close()
iferr!=nil{
log.Fatal(err.Error())
}
html=string(robots);
}else{
html=""
}
return
}
funcmain(){
proxy_addr:="http://183.221.250.137:80/"
url:="http://www.baidu.com/s?wd=ip"
html:=fetch(&url,&proxy_addr)
fmt.Println(html)
}
希望本文所述对大家的Go语言程序设计有所帮助。