colly第一课 colly的安装和使用

课程大纲

 

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

 

你可能感兴趣的:(go语言项目实战)