在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
下面是找的几个例子:
例子1:获得百度首页的html源文件: package main
import(
"fmt" "io/ioutil" "net/http" ) func main(){
response,_:=http.Get("http://www.baidu.com") defer response.Body.Close() body,_:=ioutil.ReadAll(response.Body)
fmt.Println(string(body)) } 例子2,增加了一些错误验证 代码来自:https://gist.github.com/ijt/950790 package main
import(
"fmt" "io/ioutil" "net/http" "os" ) func main(){
response,err:=http.Get("http://www.baidu.com/") if err!=nil{ fmt.Printf("%s",err) os.Exit(1) }else{ defer response.Body.Close() contents,err:=ioutil.ReadAll(response.Body)
if err!=nil{ fmt.Printf("%s",err) os.Exit(1) }
fmt.Printf("%s\n",string(contents)) }
} http下有Get,Post,PostForm三个函数。这三个函数直接实现了简单的http客户端 下一个简单的例子增加了log, http://gameor.com/archives/178/golang%E5%8F%96%E9%93%BE%E6%8E%A5%E4%B8%8Ephp%E6%AF%94%E8%BE%83%E4%B8%8B/ package main
import(
"fmt" "io/ioutil" "log" "net/http" ) func main(){
res,err:=http.Get("http://www.ghj1976.net/") if err!=nil{ log.Fatal(err)
}
defer res.Body.Close() robots,err:=ioutil.ReadAll(res.Body)
if err!=nil{ log.Fatal(err)
}
fmt.Printf("%s",robots) } 例子3:把百度的网页存在本地一个文件: http://david-je.iteye.com/blog/1602774 package main
import(
"fmt" "log" "net/http" "os" ) func main(){
resp,err:=http.Get("http://www.baidu.com") if err!=nil{ //handleerror fmt.Println(err)
log.Fatal(err)
}
defer resp.Body.Close() if resp.StatusCode==http.StatusOK{ fmt.Println(resp.StatusCode)
}
buf:=make([]byte,1024) //createfile f,err1:=os.OpenFile("baidu.html",os.O_RDWR|os.O_CREATE|os.O_APPEND,os.ModePerm) if err1!=nil{ panic(err1) return }
defer f.Close() for{ n,_:=resp.Body.Read(buf)
if 0==n{ break }
f.WriteString(string(buf[:n])) }
} 其他可以借鉴的 golang 批量检查页面 http://www.simonzhang.net/?p=1346
除了使用Get、Post、PostForm 这三个函数来建立一个简单客户端,还可以使用: 例子:指定公共头的请求百度页面 http://www.cnblogs.com/yjf512/archive/2012/06/18/2554066.html package main
import(
"fmt" "io/ioutil" "net/http" ) func main(){
client:=&http.Client{}
reqest,_:=http.NewRequest("GET","http://www.baidu.com",nil) reqest.Header.Set("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") reqest.Header.Set("Accept-Charset","GBK,utf-8;q=0.7,*;q=0.3") reqest.Header.Set("Accept-Encoding","gzip,deflate,sdch") reqest.Header.Set("Accept-Language","zh-CN,zh;q=0.8") reqest.Header.Set("Cache-Control","max-age=0") reqest.Header.Set("Connection","keep-alive") response,_:=client.Do(reqest)
if response.StatusCode==200{ body,_:=ioutil.ReadAll(response.Body)
bodystr:=string(body) fmt.Println(bodystr)
}
}
参考资料: 用golang的正则regexp:去除HTML,CSS,SCRIPT代码,仅保留页面文字
Golang解析网页入门 golang做的webCrawl: gocrawl 一个Go语言实现的web爬虫 |
请发表评论