iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Golang爬虫框架colly的使用
  • 771
分享到

Golang爬虫框架colly的使用

2024-04-02 19:04:59 771人浏览 泡泡鱼
摘要

目录项目特性安装colly实例colly 的配置colly页面爬取和解析colly框架重构爬虫golang爬虫框架 colly 简介 colly是一个采用Go语言编写的WEB爬虫框架

golang爬虫框架 colly 简介

colly是一个采用Go语言编写的WEB爬虫框架,旨在提供一个能够些任何爬虫/采集器/蜘蛛的简介模板,通过Colly。你可以轻松的从网站提取结构化数据,然后进行数据挖掘,处理或归档

项目特性

  • 清晰明了的api
  • 速度快(每个内核上的请求数大于1K)
  • 管理每个域的请求延迟和最大并发
  • 自动cookie和会话处理
  • 同步/异步/ 并行抓取
  • 高速缓存
  • 自动处理非Unicode编码
  • 支持Robots.txt
  • 支持Google App Engine
  • 通过环境变量进行配置
  • 可拓展

安装colly

go get -u GitHub.com/gocolly/colly

第一个colly 应用

package main

import (
	"fmt"
	"github.com/gocolly/colly"
)

func main() {
	c := colly.NewCollector()

	// goquery selector class
	c.Onhtml(".sidebar_link", func(e *colly.HTMLElement) {
		e.Request.Visit(e.Attr("href"))

	})

	c.OnRequest(func(r *colly.Request) {
		fmt.Println("url:",r.URL)
	})
	c.Visit("https://gORM.io/zh_CN/docs/")

}

回调函数的调用顺序

  • OnRequest 在请求之前调用
  • OnError 如果请求期间发生错误,则调用
  • OnResponseHeaders 在收到响应标头后调用
  • OnResponse 收到回复后调用
  • OnHTML OnResponse如果接收到的内容是HTML ,则在此之后立即调用
  • OnXML OnHTML如果接收到的内容是HTML或XML ,则在之后调用
  • OnScraped 在OnXML回调之后调用

实例


func collback()  {  // 添加回调 收集器
	c:= colly.NewCollector()
	c.OnRequest(func(r *colly.Request) {
		fmt.Println("请求前调用:OnRequest")
		// fmt.Println("Visiting", r.URL)
	})

	c.OnError(func(_ *colly.Response, err error) {
		fmt.Println("发生错误调用:OnReOnError")
		//log.Println("Something went wrong:", err)
	})


	c.OnResponse(func(r *colly.Response) {
		fmt.Println("获得响应后调用:OnResponse")
		//fmt.Println("Visited", r.Request.URL)
	})

	c.OnHTML("a[href]", func(e *colly.HTMLElement) {
		fmt.Println("OnResponse收到html内容后调用:OnHTML")
		//e.Request.Visit(e.Attr("href"))
	})



	c.OnXML("//h1", func(e *colly.XMLElement) {
		fmt.Println("OnResponse收到xml内容后调用:OnXML")
		//fmt.Println(e.Text)
	})

	c.OnScraped(func(r *colly.Response) {
		fmt.Println("结束", r.Request.URL)
	})
	c.Visit("Https://gorm.io/zh_CN/docs/")

}

得到的:

在这里插入图片描述

colly 的配置

设置UserAgent

//设置UserAgent的两种方式:





设置Cookie

	//设置cookie的两种方式
	//方式一:通过手动网页添加cookies
	c.OnRequest(func(r *colly.Request) {
		r.Headers.Add("cookie","_ga=GA1.2.1611472128.1650815524; _gid=GA1.2.2080811677.1652022429; __atuvc=2|17,0|18,5|19")
	})
	// 方式二 :通过url 添加cookies
	siteCookie := c.Cookies("url")
	c.SetCookies("",siteCookie)

HTTP配置

Colly使用Golang的默认http客户端作为网络层。可以通过更改默认的HTTP roundtripper来调整HTTP选项。

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,
}

colly页面爬取和解析

页面爬取和解析重点方法是 onHTML 回调方法

	c.OnHTML("a[href]", func(e *colly.HTMLElement) {
        fmt.Printf("e.Name:%v\n",e.Name)
		e.Request.Visit(e.Attr("href"))
	})




func html()  {
	c:= colly.NewCollector()
	c.OnHTML("#sidebar", func(e *colly.HTMLElement) {
		//fmt.Printf("e.Name:%v\n",e.Name) //名字
		//fmt.Printf("e.Text:%v\n",e.Text) //文本

		ret, _ := e.DOM.Html() // selector 选择器
		fmt.Printf("ret:%v\n",ret)
	})
	c.OnRequest(func(r *colly.Request) {
		fmt.Println("url:",r.URL)
	})
	c.Visit("https://gorm.io/zh_CN/docs/")
}

第一个参数是:goquery选择器,可以元素名称,ID或者Class选择器,第二个参数是根据第一个选择器获得的HTML元素结构如下:

colly框架重构爬虫

package main

import (
	"fmt"
	"github.com/gocolly/colly"
)

func main()  {
	c:= colly.NewCollector()
	c.OnHTML(".sidebar_link", func(e *colly.HTMLElement) {  // 左侧链接

		href := e.Attr("href")
		if href != "index.html"{
			c.Visit(e.Request.AbsoluteURL(href))
		}
	})
	c.OnHTML(".article-title", func(h *colly.HTMLElement) {  // 选择链接之后的标题
		title := h.Text
		fmt.Printf("title: %v\n",title)
	})
	c.OnHTML(".article", func(h *colly.HTMLElement) {  //内容
		content, _ := h.DOM.Html()
		fmt.Printf("content: %v\n",content)
	})
	c.OnRequest(func(r *colly.Request) {
		fmt.Println("url:",r.URL.String())
	})
	c.Visit("https://gorm.io/zh_CN/docs/")
}

到此这篇关于Golang爬虫框架 colly的使用的文章就介绍到这了,更多相关Golang colly内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Golang爬虫框架colly的使用

本文链接: https://www.lsjlt.com/news/154048.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Golang爬虫框架colly的使用
    目录项目特性安装colly实例colly 的配置colly页面爬取和解析colly框架重构爬虫Golang爬虫框架 colly 简介 colly是一个采用Go语言编写的Web爬虫框架...
    99+
    2024-04-02
  • Golang爬虫框架colly使用浅析
    Golang 是一门非常适合编写网络爬虫的语言,它有着高效的并发处理能力和丰富的网络编程库。下面是一个简单的 Golang 网络爬虫示例: package main import (...
    99+
    2023-05-20
    Golang colly爬虫框架 Go Colly
  • Golang网络爬虫框架gocolly/colly怎么用
    小编给大家分享一下Golang网络爬虫框架gocolly/colly怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!安装go get -u github.co...
    99+
    2023-06-05
  • golang爬虫colly 发送post请求
    继续还是工作中使用colly,不管是官网,还是网上的一些文章(其实90%就是把官网的案例抄过去),都是一样的格式,没有讲到post,测试了几次,记录一下post的使用     c :...
    99+
    2024-04-02
  • springboot+WebMagic+MyBatis爬虫框架的使用
    目录1.添加maven依赖2.项目配置文件 application.properties3.数据库表结构4.实体类5.mapper接口6.CrawlerMapper.xml文件7.知...
    99+
    2024-04-02
  • scrapy爬虫框架怎么使用
    这篇“scrapy爬虫框架怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“scrapy爬虫框架怎么使用”文章吧。一、s...
    99+
    2023-06-27
  • golang爬虫colly发送post请求怎么实现
    本文小编为大家详细介绍“golang爬虫colly发送post请求怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“golang爬虫colly发送post请求怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-07-02
  • python爬虫框架feapder的使用简介
    目录1. 前言 2. 介绍及安装 3. 实战一下 3-1  创建爬虫项目3-2  创建爬虫 AirSpider3-3  配...
    99+
    2024-04-02
  • 怎么使用Python的Scrapy爬虫框架
    本篇内容介绍了“怎么使用Python的Scrapy爬虫框架”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Scrapy是Python开发的一个...
    99+
    2023-06-02
  • 爬虫框架feapder的安装和使用
    这篇文章主要讲解了“爬虫框架feapder的安装和使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“爬虫框架feapder的安装和使用”吧! 1. 前言众所周知,Python 最流...
    99+
    2023-06-15
  • Python爬虫框架scrapy的使用示例
    这篇文章主要介绍了Python爬虫框架scrapy的使用示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效的工...
    99+
    2023-06-14
  • Python爬虫框架NewSpaper使用详解
    目录写在前面newspapernewspaper框架的使用例如:单条新闻内容获取newspaper文章缓存其他功能写在后面写在前面 原计划继续写一篇Portia的使用博客,结果在编写...
    99+
    2024-04-02
  • Python3 爬虫 scrapy框架
    上次用requests写的爬虫速度很感人,今天打算用scrapy框架来实现,看看速度如何。 第一步,安装scrapy,执行一下命令 pip install Scrapy 第二步,创建项目,执行一下命令 scrapy startproje...
    99+
    2023-01-31
    爬虫 框架 scrapy
  • 爬虫之scrapy框架
      一、认识scrapy框架   何为框架,就相当于一个封装了很多功能的结构体,它帮我们把主要的结构给搭建好了,我们只需往骨架里添加内容就行。scrapy框架是一个为了爬取网站数据,提取数据的框架,我们熟知爬虫总共有四大部分,请求、响应、...
    99+
    2023-01-30
    爬虫 框架 scrapy
  • 爬虫---scrapy爬虫框架(详细+实战)
    ​ 活动地址:CSDN21天学习挑战赛 爬虫---scrapy爬虫框架 爬虫---scrapy爬虫框架一、简介1、基本功能2、架构3、scrapy项目的结构 二、scrapy环境搭...
    99+
    2023-10-27
    爬虫 scrapy 数据挖掘 python
  • 使用Python实现简单的爬虫框架
    目录一、请求网页二、解析 HTML三、构建爬虫框架爬虫是一种自动获取网页内容的程序,它可以帮助我们从网络上快速收集大量信息。在本文中,我们将学习如何使用 Python 编写一个简单的...
    99+
    2023-05-19
    Python如何实现爬虫框架 Python爬虫框架 Python爬虫
  • PythonScrapy爬虫框架使用示例浅析
    目录示例具体说明Scrapy框架爬虫使用代理ip示例 下面是一个简单的Python爬虫Scrapy框架代码示例,该代码可以抓取百度搜索结果页面中指定关键字的链接和标题等信息: imp...
    99+
    2023-05-20
    Python Scrapy Python Scrapy爬虫框架
  • 如何使用Scrapy网络爬虫框架
    这篇文章将为大家详细讲解有关如何使用Scrapy网络爬虫框架,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。scrapy 介绍标准介绍Scrapy是一个为了爬取网站数据,提...
    99+
    2024-04-02
  • 爬虫技术框架Heritrix怎么使用
    Heritrix是一个开源的网络爬虫框架,用于抓取和存档互联网上的内容。以下是使用Heritrix进行爬虫任务的基本步骤:1. 下载...
    99+
    2023-09-26
    Heritrix
  • 爬虫框架Scrapy 之(四) ---
      解析后返回可迭代对象 这个对象返回以后就会被爬虫重新接收,然后进行迭代 通过scrapy crawl budejie -o xx.josn/xx.xml/xx.csv 将迭代数据输出到json、xml或者csv格式的外部文件中 如果...
    99+
    2023-01-31
    爬虫 框架 Scrapy
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作