golang 爬虫(二)

golang 爬虫(二),第1张

概述通用的爬虫原理示意图: 具体实现过程: 1、开一个协程从待抓取url中获取url,进行网页获取,网页解析,然后入库; 2、开另一个协程从已抓取url中获取url,进行获取其他url并且放入待抓取url队列中; 网页解析 在golang中,解析网页有几个比较好用的第三方库。比如:github.com/opesun/goquery,github.com/PuerkitoBio/goquery等等。 g 通用的爬虫原理示意图:

具体实现过程:

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、控制生产者的速度与消费者的速度的算法。
总结

以上是内存溢出为你收集整理的golang 爬虫(二)全部内容,希望文章能够帮你解决golang 爬虫(二)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1284174.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存