课程大纲
1.colly爬虫框架总体介绍
通过一个例子来了解colly如何使用
在学习新技术时,要秉承what,how,why
what:新技术是什么?概念,背景,适用场景,优缺点等
how:如何使用?搭建环境,阅读example例子,从例子模仿api的使用,做到熟练使用api实现功能需求
why:大量编码实战后,去了解内部实现原理以及源代码实现,本质是什么
2.主要数据结构和主要函数分析
collector和HTMLElement结构体的分析
colly抽象出来一个实体对象,Collector收集器
## 了解Collector
colly的主体是Collector对象,管理网络通信和负责执行注册的回调函数。使用colly需要先初始化Collector:
## 回调函数
可以向colly注册不同类型的回调函数,来控制收集任务或获取信息
3.学习html基础知识和正则表达式,goquery选择器
4.限速和队列的使用
5.模拟客户端登录
6.结果如何输出到redis和csv文件中,elastic search分布式的搜索引擎,
7.搭建一个并发的爬虫服务器
8.分布式的爬虫
utf-8 gbk232
正则匹配
xpath
goquery
nginx搭建一个web网站,我的业务是新闻,同一个ip地址,三次握手之后,发起http请求的速率
限制访问web页面速度为3次/s
回调函数的解释
点菜
你去饭店吃饭,人特别多,所以说你需要排队等
和老板说我要一碗牛肉面,付钱,老板给你一个牌子
当牛肉面做好了,就会叫号通知你,已经好了
回调函数的调用顺序如下
http协议
client -> server get/post method request
server - client response
1. OnRequest
在发起请求前被调用
2. OnError
请求过程中如果发生错误被调用
3. OnResponse
收到回复后被调用
4. OnHTML
在OnResponse被调用后,如果收到的内容是HTML,调用OnHTML函数
5. OnXML
在OnHTML被调用后,如果收到的内容是HTML或XML
5. OnScraped
在OnHTML之后被调用
## 配置Colly
colly是高度定制化的爬虫框架,有健全的默认和大量的可配置选项
Configuration can be changed at any point of a scraping job by overwriting the attributes of the collectors.
通过重新设置collector收集器的属性,可以在爬虫任务的任何时刻来改变配置。
如何改变默认配置呢?
Collector的默认配置可通过环境变量来修改。
这允许我们在无需重新编译的情况下对收集器进行微调。
环境解析是collector初始化的最后一步。
1.代码中 new Collector 增加一些配置项
2.通过环境变量来进行微调
这节课我们先能写个小例子,并且能抓取到元素
## 错误处理
模拟登录
在爬虫的过程中,很多东西不是我们想的那么简单。
这个要研究下
```
c := colly.NewCollector()
c.WithTransport(&http.Transport{
Proxy: http.ProxyFromEnvironment,
DialContext: (&net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
DualStack: true,
}).DialContext,
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
}
```
参考链接:
https://www.cnblogs.com/majianguo/p/8146110.html
https://www.cnblogs.com/majianguo/p/8186429.html
https://github.com/chromedp/chromedp
http://go-colly.org/articles/scraping_tips/
https://github.com/sourcegraph/webloop
https://studygolang.com/articles/13935?fr=sidebar