package main
import (
"fmt"
"io"
"net/http"
"os"
"strconv"
"time"
)
func main() {
//指定爬取起始,终止页
var start , end int
fmt.Println("请输入起始页:")
fmt.Scan(&start)
fmt.Println("请输入爬取的终止页:")
fmt.Scan(&end)
working(start,end)
}
//爬取指定页面
func working(start,end int) {
var url string
url="xxxxxx" //自己找一个url
//循环爬取每一页的数据
for i:=start;i<=end;i++{
result, err := HttpGet(url)
if err != nil {
fmt.Println("httpget err ",err)
continue
}
//将读到的数据保存成一个文件
file, err := os.Create("第" + strconv.Itoa(i) + "页" + ".html")
if err != nil {
fmt.Println(err)
continue
}
_, _ = file.WriteString(result)
_ = file.Close()
}
}
func HttpGet(url string)(result string,err error){
resp, err := http.Get(url)
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
time.Sleep(time.Second)
//循环读取网页数据
//缓冲区
buf := make([]byte, 2048)
for{
n, err := resp.Body.Read(buf)
if n==0{
fmt.Println("读取网页完成")
break
}
if err!=nil && err!=io.EOF {
fmt.Println(err)
return
}
//累加每一次循环读取的 buf数据,存入result 一次性返回
result+=string(buf[:n])
}
return
}
Go-爬虫小例子
最新推荐文章于 2023-06-10 20:41:34 发布