go 爬虫框架 - gocolly
Posted 星仔学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go 爬虫框架 - gocolly相关的知识,希望对你有一定的参考价值。
colly 是 Go 实现的比较有名的一款爬虫框架,而且 Go 在高并发和分布式场景的优势也正是爬虫技术所需要的。它的主要特点是轻量、快速,设计非常优雅,并且分布式的支持也非常简单,易于扩展。
使用
go get -u github.com/gocolly/colly
第一步,导入colly
import "github.com/gocolly/colly"
第二步,创建采集器
c := colly.NewCollector( colly.UserAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/80.0.3987.163 Safari/537.36"), colly.MaxDepth(1), colly.Debugger(&debug.LogDebugger))
第三步,监听回调函数,获取需要的内容
// 诗词列表 c.OnHTML("div[class='right'] > div[class='sons'] > div[class='cont']", func(e *colly.HTMLElement) // e.ForEach("a", func(i int, item *colly.HTMLElement) // 爬虫协程 //href := item.ChildAttr("a", "href") attr := item.Attr("href") text := item.Text m := make(map[string]string, 10) m["title"] = text m["href"] = attr // 把连接放进通道内 chanPoetry <- m ) )
第四步,访问网址
s.Visit(href)
第五步,把爬取的文件写进文件里
for key := range chanPoetryContent // 获取链接 href := baseUrl + key["href"] // 文件名称 fileName := key["title"] dirName := key["text"] s := colly.NewCollector(colly.UserAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"), colly.MaxDepth(1), colly.Debugger(&debug.LogDebugger)) s.OnHTML("div[class='left'] ", func(e *colly.HTMLElement) name := e.ChildText("div[class='sons'][id='sonsyuanwen'] > div[class='cont'] > h1") author := e.ChildText("div[class='sons'][id='sonsyuanwen'] > div[class='cont'] > p[class='source'] > a") text := e.ChildText("div[class='sons'][id='sonsyuanwen'] > div[class='cont'] > div[class='contson']") content := name + "\\r\\n" + author text = strings.Replace(text, "。", "。\\r\\n", 99999) text = strings.Replace(text, ";", ";\\r\\n", 99999) text = strings.Replace(text, ")", ")\\r\\n", 99999) path := mainDir + "/诗词/" + dirName if len(fileName) > 0 path = path + "/" + fileName if len(name) == 0 return else // 创建目录 makeDir(path) file, _ := os.OpenFile(path+"/"+name+".txt", os.O_CREATE|os.O_WRONLY, 0644) file.WriteString(content + "\\r\\n") file.WriteString(text + "\\r\\n") // 关闭资源 file.Close() ) s.Visit(href) waitGroup.Done()
以上是关于go 爬虫框架 - gocolly的主要内容,如果未能解决你的问题,请参考以下文章
Golang 网络爬虫框架gocolly/colly 二 jQuery selector
试验一下Golang 网络爬虫框架gocolly/colly