Golang 网络爬虫框架gocolly/colly
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设置环境变量,代码同上。
回掉函数的调用顺序
OnRequest 在发起请求前被调用。
OnError 请求过程中如果发生错误被调用。
OnResponse 收到回复后被调用。
OnHTML 在OnResponse之后被调用,如果收到的内容是HTML 。
- 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相关推荐
- Golang网络爬虫框架gocolly/colly(三)
熟悉了<Golang 网络爬虫框架gocolly/colly 一>和<Golang 网络爬虫框架gocolly/colly 二>之后就可以在网络上爬取大部分数据了.本文接下来将 ...
- Golang 网络爬虫框架gocolly/colly 四
爬虫靠演技,表演得越像浏览器,抓取数据越容易,这是我多年爬虫经验的感悟.回顾下个人的爬虫经历,共分三个阶段:第一阶段,09年左右开始接触爬虫,那时由于项目需要,要访问各大国际社交网站,Facebook ...
- 非零基础自学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 ...
- Go语言爬虫框架之Colly和Goquery
文章目录 写在前面 Go语言爬虫框架之Colly和Goquery 网络爬虫 爬虫的简单算法 Colly 开始 OnHTML OnRequest / OnResponse HTMLElement Bri ...
- 快速认识网络爬虫与Scrapy网络爬虫框架
本课程为之后Scrapy课程的预先课程,非常简单,主要是为了完全没有基础的小白准备的,如果你已经有了一定的了解那么请跳过该部分 问:什么是网络爬虫 答:就是从网上下载数据的一个程序,只不过这个程序下载 ...
- 网络爬虫框架cetty的实现
网络爬虫框架cetty的实现 功能介绍 maven配置 简单demo的实现 提供能力 关于demo的github地址如下 功能介绍 基于完全自定义事件处理机制的爬虫框架 模块化的设计,提供强大的可扩展 ...
- 开源 Python网络爬虫框架 Scrapy
开源 Python 网络爬虫框架 Scrapy:http://blog.csdn.net/zbyufei/article/details/7554322 介绍 所谓网络爬虫,就是一个在网上到处或定向抓 ...
- 基于java的网络爬虫框架(实现京东数据的爬取,并将插入数据库)
本文为原创博客,仅供技术学习使用.未经允许,禁止将其复制下来上传到百度文库等平台. 目录 网络爬虫框架 网络爬虫的逻辑顺序 网络爬虫实例教学 model main util parse db 再看ma ...
- 网络爬虫框架Scrapy简介
作者: 黄进(QQ:7149101) 一. 网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本:它是一个自动提取网页的程序,它为搜索引擎从万维 ...
最新文章
- Pytorch-nn.BatchNorm2d()
- wireshark无权限
- 快速安装及部署DRBD
- linux kernel 进程管理,Linux内核 | 进程管理
- linear model课程笔记
- 内核电源管理器已启动关机转换_电气器件-菲尼克斯UPS(不间断电源)使用
- TF-tf.keras.layers.Dropout
- 用U盘制作Windows7安装以及MacBook Air上装Win7
- 【转载】HTML之表单的设计(十)
- 深入解读Linux内存管理系列(总览)
- VS快速定位文件、代码插件——DPack
- 鞋城模板+html,西安锦绣鞋城整合营销策划方案
- WebRTC的噪声抑制(noise suppression,NS)算法
- 云南高性能云桌面搭建解决方案、云桌面与传统PC优势对比,云桌面适用场景分析
- oracle 控制文件 dump,将控制文件dump出来研究下内容
- 七星彩长奖表图_新版够力七星彩奖表
- 以蜜代糖促进心脑血管健康
- 民航客运量变化趋势的多元线性回归模型--基于R(附R程序及讲解)
- 流行创意风格教师求职简历免费word模板
- 现货白银分析并不能解决所有问题
热门文章
- VMware15.0安装CentOS7
- 用Android Studio做一个超好玩的拼图游戏,附送超详细注释的源码
- spring学习---IOC--基于xml--bean管理--spring创建对象--spring注入属性--其他属性注入--外部bean--内部bean
- python的枚举函数_enumerate()函数~~返回一个枚举对象
- arcgis里面怎么截图_ArcGIS在变更调查中影像截图批量制作的统一方法
- anaconda安装numpy_Python3.8如何安装Numpy
- 二叉树类图_数据结构(十四)——二叉树
- hutool获取5天前的日期_连载|日 产 物 流 管 理 方 式(5)
- oracle共享池的结构,Oracle 10g内存结构之共享池的相关知识及使用简介
- 帝国cms怎么搭建python环境_自己写的帝国cms后台文章添加增加二级或多级联动功能...