[Introduction]智能爬虫:goquery

1,347 阅读1分钟

一.开发环境

Windows 10 Golang

依赖包:goquery

二.goquery官方文档/方法

较常用的方法有Find和Each

// goquery暴露的对象种类
*goquery.Document // goquery doc对象
*Selection // goquery选择器
*Matcher // 匹配器

func (s *Selection) Find(selector string) *Selection // Find函数原型,可以进行链式调用
func (s *Selection) Each(f func(int, *Selection)) *Selection // Each方法

三.实例

爬取中国银行的汇率牌价表,golang依赖net/http包和goquery包

唯一的难点是对于goquery方法的使用,需要阅读官方文档:

godoc.org/github.com/…

使用原生的net/http包基本上可以解决大多数的网页请求,使用goquery可以解决页面解析问题

四.改进

可以利用golang的协程特性进行异步多协程爬取

a.增加安全性

增加安全性可以通过几个方面进行改进:

1.首先可以限制爬虫的爬取速度

2.每次对网页的请求都随机选用一个客户端

3.选用IP代理池,防止IP误封(及限制ip访问次数)

构造请求代理ip网站的链接→获取网页内容→ 提取网页中IP地址和端口号→验证IP的有效性并存储

轻量级反爬虫方案

五.相关

浅谈JSP

golang带json的Http请求

Get/Post

HTTP请求中的Form Data和Request Payload的区别

HTTP Json请求

六.参考文档

zhuanlan.zhihu.com/p/32825491

blog.csdn.net/yang731227/…

net/http:studygolang.com/articles/94…

golang HTTP操作

python建立爬虫代理ip池

爬虫黑科技之让你的爬虫程序更像人类用户的行为

七.框架

1.gocolly/colly

特点:事件监听,通过callback执行事件处理

2.gospider

基于colly开发的web管理界面