首页 > 其他分享 >术业有专攻,不要用原生 http 库自己写爬虫!

术业有专攻,不要用原生 http 库自己写爬虫!

时间:2024-07-01 19:20:38浏览次数:17  
标签:http err 爬虫 术业 go org com colly

术业有专攻,不要用原生 http 库自己写爬虫!

网管叨bi叨 2024-06-05 09:27 北京 3人听过  

以下文章来源于凉凉的知识库 ,作者凉凉的知识库

凉凉的知识库.

凉凉的知识库,带你学点后端必备知识

有些人可能认为爬虫框架和http client库的功能一样,用http client库也可以写爬虫。当然,无论用第三方的http client库还是官方的http库,都可以写爬虫。但术业有专攻,爬虫框架专门为批量爬取设计,往往拥有并发控制、队列、缓存、HTML解析等一系列开箱即用的API,能大幅简化在爬虫实现过程中的负担

Python中非常知名的爬虫框架有Scrapy,Go中也有一些star数较高的爬虫框架。colly就是其中的佼佼者,它API简洁,性能优良,开箱即用。今天就来快速学习一下吧!

基本使用

首先引入依赖

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

之后就可以使用colly,通过Visit函数来告知colly采集器要访问的URL

package main

import (
 "fmt"

 "github.com/gocolly/colly/v2"
)

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

 c.Visit("http://go-colly.org/")
}

这样就行了么?运行下试试,没有任何输出。

$ go run main.go                                                  

原因在于代码要求colly采集器访问http://go-colly.org/,但没有设定访问URL成功或者失败后要执行的动作。colly提供了一系列的回调函数,用于URL访问和响应过程中各种情况的处理

例如,可以设定访问URL前、响应成功、响应失败时不同逻辑的处理

package main

import (
 "fmt"

 "github.com/gocolly/colly/v2"
)

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

 c.OnRequest(func(r *colly.Request) {
  fmt.Println("Visiting", r.URL)
 })

 c.OnResponse(func(r *colly.Response) {
  fmt.Println("Visited", r.Request.URL)
 })

 c.OnError(func(_ *colly.Response, err error) {
  fmt.Println("Something went wrong:", err)
 })
 
 c.Visit("http://go-colly.org/")
}

colly提供的回调和回调的顺序如下图,每个回调可以设置多次,会依次执行

图片回调的时机

常规配置

配置分两部分,一部分是colly采集器的配置,一部分是HTTP的配置

标签:http,err,爬虫,术业,go,org,com,colly
From: https://www.cnblogs.com/cheyunhua/p/18278673

相关文章

  • 为什么网络爬虫广泛使用HTTP代理?
    一、引言网络爬虫作为自动抓取互联网信息的重要工具,在现代社会中发挥着不可或缺的作用。然而随着网络环境的日益复杂,网站反爬虫技术的不断进步,网络爬虫在获取数据的过程中面临着越来越多的挑战。为了应对这些挑战,HTTP代理成为了网络爬虫不可或缺的一部分。本文将从多个角度详......
  • 为什么网络爬虫广泛使用HTTP代理?
    一、引言网络爬虫作为自动抓取互联网信息的重要工具,在现代社会中发挥着不可或缺的作用。然而随着网络环境的日益复杂,网站反爬虫技术的不断进步,网络爬虫在获取数据的过程中面临着越来越多的挑战。为了应对这些挑战,HTTP代理成为了网络爬虫不可或缺的一部分。本文将从多个角度详......
  • 为什么网络爬虫广泛使用HTTP代理?
    一、引言网络爬虫作为自动抓取互联网信息的重要工具,在现代社会中发挥着不可或缺的作用。然而随着网络环境的日益复杂,网站反爬虫技术的不断进步,网络爬虫在获取数据的过程中面临着越来越多的挑战。为了应对这些挑战,HTTP代理成为了网络爬虫不可或缺的一部分。本文将从多个角度详......
  • 为什么网络爬虫广泛使用HTTP代理?
    一、引言网络爬虫作为自动抓取互联网信息的重要工具,在现代社会中发挥着不可或缺的作用。然而随着网络环境的日益复杂,网站反爬虫技术的不断进步,网络爬虫在获取数据的过程中面临着越来越多的挑战。为了应对这些挑战,HTTP代理成为了网络爬虫不可或缺的一部分。本文将从多个角度详......
  • [WARNING] Could not validate integrity of download from https://maven.aliyun.com
    问题背景:今天在使用jenkins自动部署项目时,部署失败,查看日志得到如下关键信息[WARNING]Couldnotvalidateintegrityofdownloadfromhttps://maven.aliyun.com/repository/public/log4j/log4j/maven-metadata.xml问题解决:查询jenkins相关资料得到最可能的原因应该......
  • ASP.NET Core MVC 从入门到精通之HttpContext
    原文链接:https://www.cnblogs.com/hsiang/p/17368101.html什么是HttpContext?在B/S模式开发的程序中,客户端是浏览器,服务器端Web服务程序,HttpContext是连接客户端和服务器端程序的桥梁,交代了当前请求的环境信息,它封装了请求[Request]和响应[Response]及其他所有信息,示意图如下所......
  • python爬虫之基于终端指令的持久化存储
    python爬虫之基于终端指令的持久化存储scrapy持久化存储基于终端指令:1、要求:只可以将parse方法的返回值存储到本地的文本文件中2、注意:持久化存储对应的文本文件类型只可以为:‘json’,‘jsonlines’,‘jsonl’,‘jl’,‘csv’,‘xml’,‘marshal’,‘pickle’3......
  • 【0基础学爬虫】爬虫基础之scrapy的使用
    【0基础学爬虫】爬虫基础之scrapy的使用大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学爬虫】专栏,帮助小白快速入门爬虫,本期为......
  • Http 1.0、 2.0 跟3.0
    HTTP(HypertextTransferProtocol)的不同版本在互联网的发展历程中扮演了关键角色,每一代版本都在努力提升网络应用的效率、安全性和互操作性。下面是HTTP/1.0、HTTP/2和HTTP/3的主要特点和改进之处:HTTP/1.0发布年代:1996年特点:每个请求/响应都建立在一个独立的TCP连接上。请......
  • Go1.19革命:打造超效能站点模板爬虫
    目录项目介绍环境配置核心依赖库爬虫实现HTTP请求数据解析数据存储运行与测试代码详解注意事项项目介绍本文将介绍如何使用Go1.19实现一个简单的站点模板爬虫。这个爬虫将访问指定的网站,获取页面内容并解析需要的数据,最终将数据存储在本地文件中。此教程适合具有基本G......