Go爬虫框架colly
golang爬虫框架colly
colly一款快速优雅的golang爬虫框架,简单易用,功能完备。
官网地址:http://go-colly.org/
包地址:import "github.com/gocolly/colly"
一个简单的例子:
package main
import (
"fmt"
"github.com/gocolly/colly"
)
func main() {
c := colly.NewCollector()
c.OnHTML("a", func(e *colly.HTMLElement) {
e.Request.Visit(e.Attr("href"))
})
c.OnRequest(func(r *colly.Request) {
fmt.Println("Visiting", r.URL)
})
c.Visit("http://go-colly.org/")
}使用方式概括下来主要有三步:
创建一个采集器
注册回调函数
访问具体网站
创建采集器时可以指定一些配置参数,如useragent,爬取深度及日志等
回调函数共有7中
OnRequest
请求前调用
*colly.Request
OnError
请求发生错误时调用
*colly.Response
error
OnResponseHeaders
收到响应头后调用
colly.Response
OnResponse
收到响应后调用
colly.Response
OnHTML
响应内容是HTML时调用
xpath表达式
func(e *colly.HTMLElement)
OnXML
响应内容是XML时调用
xpath表达式
func(e *colly.XMLElement)
OnScraped
在OnXML之后调用
func(r *colly.Response)
OnHTML回调可以注册多个,匹配不同的xpath表达式
1. 爬取简书首页文章列表
通过浏览器开发者工具查看jianshu.com结构
文章列表为ul标签,中间每一项是li标签,li中包含content,content中包含title,abstract和meta标签
2.爬取文章列表和详情
文章列表和1方式一样,文章详情通过创建新的采集器访问详情页面
3. 爬取需要登录的网页
官网提供登录页处理的例子,但是大多数涉及验证码,不好处理,目前方式是手动登录,复制cookie写到爬虫请求头里
4. 内存任务队列
将需要爬取的连接放入队列中,设置队列并发数,可以并行爬取连接
5. redis任务队列
设置redis存储后,队列中URL存储在redis中,访问页面的cookie及访问记录也会保存在redis中
6.配置代理

Last updated
Was this helpful?