golang 爬虫(二)

本文介绍了一种基于Golang的爬虫实现方案,包括网页抓取、解析及数据存储的具体流程,并提供了使用goquery库进行HTML解析的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通用的爬虫原理示意图:

具体实现过程:

1、开一个协程从待抓取url中获取url,进行网页获取,网页解析,然后入库;

2、开另一个协程从已抓取url中获取url,进行获取其他url并且放入待抓取url队列中;


网页解析

在golang中,解析网页有几个比较好用的第三方库。比如:github.com/opesun/goquery,github.com/PuerkitoBio/goquery等等。

github.com/PuerkitoBio/goquery功能强大,但在使用的时候,编译不过,当时比较懒就不用了。而使用github.com/opesun/goquery,该插件是在解析html节点时,使用jq类似的语法。下面介绍几个列子:

content,err:=goquery.ParseUrl(url)
if err != nil{
     panic(error)
}
1、打印整个html:fmt.Println(content.Html())

2、获取class的内容:content.Find(".name").Text();

3、获取id的内容:content.Find("#name").Text();

4、当获取的内容中超过一条内容时:

sex:=content.Find("input[name='gender']:checked")
		for i:=0;i<sex.Length();i++{
			if sex.Eq(i).Attr("checked") != "checked"{
				continue;
			}
			if sex.Eq(i).Attr("value")=="0"{
				info.sex = "女"
			}
			if sex.Eq(i).Attr("value")=="1"{
				info.sex = "男"
			}
		}

获取其他待抓取网页
本次测试是爬知乎网的用户信息。
1、获取问题网址url;
2、获取对应问题网址的回答用户url;

需改进的地方
1、爬其他用户url的算法;
2、只有两个线程,分别为生产者和消费者。使用线程池。
3、控制生产者的速度与消费者的速度的算法。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值