Go爬虫

第一次接触Go, 写个小爬虫练习一下

由于平时用Python比较多, 不知道Go对比Python来说有什么区别呢

就拿贴吧来练习一下, 抓帖子里的图片
package main

import (
	"fmt"
	"net/http"
	"io/ioutil"
	"github.com/PuerkitoBio/goquery"
)


var a = 0
var url = "https://tieba.baidu.com/p/4608718475"
var isNext = true


func GetDetail(doc *goquery.Document){
	// 解析详情页函数

	doc.Find("img.BDE_Image[size]").Each(func(i int, s *goquery.Selection) {
		_picSrc, _exist := s.Attr("src")
		if (_exist) {
			fmt.Println(_picSrc)
			resp, err := http.Get(_picSrc)
			if err != nil {
				fmt.Println("访问图片出错")
			}

			_data ,_err2 := ioutil.ReadAll(resp.Body)
			if _err2 != nil {
				panic(_err2)
			}
			//保存到本地
			ioutil.WriteFile(fmt.Sprintf("./images/20190425_%d.jpg", a), _data, 0644)
			fmt.Println("图片下载成功")
			a ++
		}
	})
}

func GetMovie(startUrl string) (bool){
	fmt.Println(url)

	_doc, _err := goquery.NewDocument(startUrl)

	// 开始下载单页面的图片
	GetDetail(_doc)
	if _err != nil {
		fmt.Println("下载请求错误")
	}
	_next, _exist := _doc.Find("span.tP+a").Attr("href")
	// 组装下一页url
	url = "https://tieba.baidu.com" + _next
	fmt.Println(_next)
	fmt.Println(_exist)
	return _exist

}

func main() {
	for isNext {
		isNext = GetMovie(url)
		//fmt.Println(url)

	}
}




全部爬下来了700多张表情包,如图
在这里插入图片描述
虽然很简单,但是学到了不少关于Go的知识

说说遇到的坑

go get 第三方时, 对包网站golang.org的河蟹(因为是谷歌的关系),这里建议去github上去clone下来到src下面, 或者拿梯子下载,都没问题
. 在这里插入图片描述
写完之后发现区别还是有点大, 作为一个菜鸡还需要加大力度跟各位大佬学习,由于是新手,要总结的地方还有很多
在这里插入图片描述
.待续,以上~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值