gocolly是Golang实现的网络爬虫框架,名列go版爬虫程序榜首。

安装
go get -u github.com/gocolly/colly/...

例子
import ( "fmt" "github.com/gocolly/colly")func main() { c := colly.NewCollector() c.OnResponse(func(r *colly.Response) { fmt.Println("IP:", string(r.Body)) }) //c.SetProxy("http://127.0.0.1:1080") c.Visit("http://ip.cip.cc/")}

SetProxy函数可以用来配置HTTP代理。

colly的主体是Collector对象,管理网络通信和负责在作业运行时执行附加的回掉函数。使用colly需要先初始化Collector:

c := colly.NewCollector()

vgo
vgo是Go语言推出的第三方库管理工具,在Go语言新版本中使用。

常用的命令行:
· go help mod 查看帮助。

· go mod init <项目模块名称>初始化模块,会在项目根目录下生成 go.mod 文件,是可以自己手动编辑的。

依赖包大多在Github上,安装依赖可能会出现连接超时等问题,可以配置全局git代理:

git config --global http.proxy http://127.0.0.1:1080git config --global https.proxy https://127.0.0.1:1080#取消代理:git config --global --unset http.proxygit config --global --unset https.proxy

cmd走shadowsocks代理:

set http_proxy=127.0.0.1:1080set https_proxy=127.0.0.1:1080curl cip.ccIP : 140.206.97.42地址 : 中国 上海数据二 : 上海市 | 联通URL : http://www.cip.cc/140.206.97.42

Linux使用export设置环境变量,代码同上。

回掉函数的调用顺序

  1. OnRequest 在发起请求前被调用。

  2. OnError 请求过程中如果发生错误被调用。

  3. OnResponse 收到回复后被调用。

  4. OnHTML 在OnResponse之后被调用,如果收到的内容是HTML 。

  5. OnScraped 在OnHTML之后被调用。

官方提供的Basic示例代码:

package mainimport ( "fmt" "github.com/gocolly/colly")func main() { // Instantiate default collector c := colly.NewCollector( // Visit only domains: hackerspaces.org, wiki.hackerspaces.org colly.AllowedDomains("hackerspaces.org", "wiki.hackerspaces.org"), ) // On every a element which has href attribute call callback c.OnHTML("a[href]", func(e colly.HTMLElement) { link := e.Attr("href") // Print link fmt.Printf("Link found: %q -> %s\n", e.Text, link) // Visit link found on page // Only those links are visited which are in AllowedDomains c.Visit(e.Request.AbsoluteURL(link)) }) // Before making a request print "Visiting ..." c.OnRequest(func(r colly.Request) { fmt.Println("Visiting", r.URL.String()) }) // Start scraping on https://hackerspaces.org c.Visit("https://hackerspaces.org/")}

该实例程序仅访问hackerspaces.org域内的链接,OnHTML回掉函数的选择器为a[href],选择页面内具有href属性的a类型元素,找到链接后继续抓取。 运行的部分结果如下:

Visiting https://hackerspaces.org/Link found: "navigation" -> #column-oneLink found: "search" -> #searchInputLink found: "" -> /File:Cbase07.jpgVisiting https://hackerspaces.org/File:Cbase07.jpgLink found: "navigation" -> #column-oneLink found: "search" -> #searchInputLink found: "File" -> #fileLink found: "File history" -> #filehistoryLink found: "File usage" -> #filelinksLink found: "" -> /images/e/ec/Cbase07.jpgVisiting https://hackerspaces.org/images/e/ec/Cbase07.jpgLink found: "800 × 600 pixels" -> /images/thumb/e/ec/Cbase07.jpg/800px-Cbase07.jpgVisiting https://hackerspaces.org/images/thumb/e/ec/Cbase07.jpg/800px-Cbase07.jpg

转载于:https://blog.51cto.com/13982207/2342861

Golang 网络爬虫框架gocolly/colly相关推荐

  1. Golang网络爬虫框架gocolly/colly(三)

    熟悉了<Golang 网络爬虫框架gocolly/colly 一>和<Golang 网络爬虫框架gocolly/colly 二>之后就可以在网络上爬取大部分数据了.本文接下来将 ...

  2. Golang 网络爬虫框架gocolly/colly 四

    爬虫靠演技,表演得越像浏览器,抓取数据越容易,这是我多年爬虫经验的感悟.回顾下个人的爬虫经历,共分三个阶段:第一阶段,09年左右开始接触爬虫,那时由于项目需要,要访问各大国际社交网站,Facebook ...

  3. 非零基础自学Golang 第17章 HTTP编程(上) 17.3 爬虫框架gocolly 17.3.1 gocolly简介

    非零基础自学Golang 文章目录 非零基础自学Golang 第17章 HTTP编程(上) 17.3 爬虫框架gocolly 17.3.1 gocolly简介 第17章 HTTP编程(上) 17.3 ...

  4. Go语言爬虫框架之Colly和Goquery

    文章目录 写在前面 Go语言爬虫框架之Colly和Goquery 网络爬虫 爬虫的简单算法 Colly 开始 OnHTML OnRequest / OnResponse HTMLElement Bri ...

  5. 快速认识网络爬虫与Scrapy网络爬虫框架

    本课程为之后Scrapy课程的预先课程,非常简单,主要是为了完全没有基础的小白准备的,如果你已经有了一定的了解那么请跳过该部分 问:什么是网络爬虫 答:就是从网上下载数据的一个程序,只不过这个程序下载 ...

  6. 网络爬虫框架cetty的实现

    网络爬虫框架cetty的实现 功能介绍 maven配置 简单demo的实现 提供能力 关于demo的github地址如下 功能介绍 基于完全自定义事件处理机制的爬虫框架 模块化的设计,提供强大的可扩展 ...

  7. 开源 Python网络爬虫框架 Scrapy

    开源 Python 网络爬虫框架 Scrapy:http://blog.csdn.net/zbyufei/article/details/7554322 介绍 所谓网络爬虫,就是一个在网上到处或定向抓 ...

  8. 基于java的网络爬虫框架(实现京东数据的爬取,并将插入数据库)

    本文为原创博客,仅供技术学习使用.未经允许,禁止将其复制下来上传到百度文库等平台. 目录 网络爬虫框架 网络爬虫的逻辑顺序 网络爬虫实例教学 model main util parse db 再看ma ...

  9. 网络爬虫框架Scrapy简介

    作者: 黄进(QQ:7149101) 一. 网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本:它是一个自动提取网页的程序,它为搜索引擎从万维 ...

最新文章

  1. Pytorch-nn.BatchNorm2d()
  2. wireshark无权限
  3. 快速安装及部署DRBD
  4. linux kernel 进程管理,Linux内核 | 进程管理
  5. linear model课程笔记
  6. 内核电源管理器已启动关机转换_电气器件-菲尼克斯UPS(不间断电源)使用
  7. TF-tf.keras.layers.Dropout
  8. 用U盘制作Windows7安装以及MacBook Air上装Win7
  9. 【转载】HTML之表单的设计(十)
  10. 深入解读Linux内存管理系列(总览)
  11. VS快速定位文件、代码插件——DPack
  12. 鞋城模板+html,西安锦绣鞋城整合营销策划方案
  13. WebRTC的噪声抑制(noise suppression,NS)算法
  14. 云南高性能云桌面搭建解决方案、云桌面与传统PC优势对比,云桌面适用场景分析
  15. oracle 控制文件 dump,将控制文件dump出来研究下内容
  16. 七星彩长奖表图_新版够力七星彩奖表
  17. 以蜜代糖促进心脑血管健康
  18. 民航客运量变化趋势的多元线性回归模型--基于R(附R程序及讲解)
  19. 流行创意风格教师求职简历免费word模板
  20. 现货白银分析并不能解决所有问题

热门文章

  1. VMware15.0安装CentOS7
  2. 用Android Studio做一个超好玩的拼图游戏,附送超详细注释的源码
  3. spring学习---IOC--基于xml--bean管理--spring创建对象--spring注入属性--其他属性注入--外部bean--内部bean
  4. python的枚举函数_enumerate()函数~~返回一个枚举对象
  5. arcgis里面怎么截图_ArcGIS在变更调查中影像截图批量制作的统一方法
  6. anaconda安装numpy_Python3.8如何安装Numpy
  7. 二叉树类图_数据结构(十四)——二叉树
  8. hutool获取5天前的日期_连载|日 产 物 流 管 理 方 式(5)
  9. oracle共享池的结构,Oracle 10g内存结构之共享池的相关知识及使用简介
  10. 帝国cms怎么搭建python环境_自己写的帝国cms后台文章添加增加二级或多级联动功能...