Go语言爬虫

爬虫

访问web服务器,获取指定数据信息的一段程序

流程

  1. URL (请求的地址,明确爬什么)
  2. 送请求,获取响应数据
  3. 保存响应数据,提有用信息
  4. 处理数据(存储、使

爬取贴吧

搜索steam吧

第一页:https://tieba.baidu.com/f?kw=steam&ie=utf-8&pn=0

第二页:https://tieba.baidu.com/f?kw=steam&ie=utf-8&pn=50

第三页:https://tieba.baidu.com/f?kw=steam&ie=utf-8&pn=100

.......

第n页:https://tieba.baidu.com/f?kw=steam&ie=utf-8&pn=50(n-1)    

规律:下一页就是pn+50

func httpGet(url string)(result string,err error)  {
	resp,err1:=http.Get(url)
	if err1!=nil{
		err=err1  //封装函数内部的错误,传出给调用者
		return
	}
	defer resp.Body.Close()
	//循环读取网页的数据,传出给调用者
	for{
		buf:=make([]byte,4096)
		n,err2:=resp.Body.Read(buf)
		if n==0{
			fmt.Println("读取网页完成")
			break
		}
		if err2!=nil&&err2!=io.EOF{
			err=err2
			return
		}
		result +=string(buf[:n]) //累加每一次循环读到的buf数据,存入到result一次性返回
	}
	return
}
//爬取页面操作
func working(start int,end int)  {
	fmt.Printf("正在爬取第%d页到第%d页的内容\n",start,end)
	//循环爬取页面的内容
	for i:=start;i<=end;i++{
	url:="https://tieba.baidu.com/f?kw=steam&ie=utf-8&pn="+strconv.Itoa((i-1)*50)
	result,err:=httpGet(url)
	if err!=nil{
		fmt.Println("heepGet error",err)
		continue  //继续打印其他的页面
	    }
		//fmt.Println("result=:",result)
		//将读到的网页数据保存成一个文件
		file,err:=os.Create("第"+strconv.Itoa(i)+"页"+".html")
		if err!=nil{
			fmt.Println("Create err:",err)
			continue
		}
		file.WriteString(result)
	 	file.Close() //保存好一个文件关闭一个文件
	}
}
func main()  {
	//指定爬虫起始终止页
	var start,end int
	fmt.Println("请输入爬取的起始页:")
	fmt.Scan(&start)
	fmt.Println("请输入爬取的终止页:")
	fmt.Scan(&end)
	//封装函数
	working(start ,end)
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值