go HTML 标签提取器 soup

LLM驱动爬虫:利用大语言模型自动解析动态DOM与智能提取非结构化数据 LLM驱动的爬虫不是要完全取代传统技术,而是将开发者从繁琐的**“维护选择器”中解放出来,去关注更有价值的“数据逻辑”与“业务洞察”**。在未来,一个优秀的爬虫工程师,不再是XPath大师,而是Prompt工程师和数据架构师。你只需要告诉AI“想要什么”,剩下的,交给智能去完成。 阅读详情

什么是soup

类似python中beatifulsoup,用于提取html标签提取,多用于爬虫。它可以很好的处理不规范标记并生成剖析树(parse tree)。 它提供简单又常用的导航,搜索以及修改剖析树的操作。利用它我们不在需要编写正则表达式就可以方便的实现网页信息的提取。soup是一个小型的网页提取包,其接口与beauthoulsoup非常相似。

下载

go get github.com/anaskhan96/soup

接口

  • var Headers map[string]string 将头文件设置为键-值对的映射,这是单独调用Header()的替代方法
  • var Cookies map[string]string 将Cookie设置为键-值对的映射,这是单独调用Cookie()的另一种方法
  • func Get(string) (string,error) {} 将url作为参数,返回HTML字符串
  • func GetWithClient(string, *http.Client) {} 将url和自定义HTTP客户端作为参数,返回HTML字符串
  • func Post(string, string, interface{}) (string, error) {} 以url、bodyType和负载为参数,返回HTML字符串
  • func PostForm(string, url.Values) {} 接受url和正文。bodyType设置为“application/x-www-form-urlencoded
  • func Header(string, string) {} 接受key,value对,将其设置为Get()中的HTTP请求的头
  • func Cookie(string, string) {} 接受key,value对,将其设置为要与Get()中的HTTP请求一起发送的Cookie
  • func HTMLParse(string) Root {} 以HTML字符串为参数,返回一个指向构造的DOM的指针
  • func Find([]string) Root {} Element标记,(属性键值对)作为参数,返回指向第一个出现的指针
  • func FindAll([]string) []Root {} 与Find()相同,但返回指向所有匹配项的指针
  • func FindStrict([]string) Root {} Element tag,(attribute key-value pair)作为参数,指向第一次出现的指针返回了完全匹配的值
  • func FindAllStrict([]string) []Root {} 与FindStrict()相同,但指向返回的所有引用的指针
  • func FindNextSibling() Root {} find指向同一个functing}元素的下一个functing}指针
  • func FindNextElementSibling() Root {} 指向返回的DOM中元素的下一个同级元素的指针
  • func FindPrevSibling() Root {} 指向返回的DOM中元素的上一个同级的指针
  • func FindPrevElementSibling() Root {} 指向返回的DOM中元素的上一个同级元素的指针
  • func Children() []Root {} 查找此DOM元素的所有直接子级
  • func Attrs() map[string]string {} map返回元素的所有属性作为对其各自值的查找
  • func Text() string {} 返回非嵌套标记内的全文,在嵌套标记中返回前半部分e
  • func FullText() string {} 返回嵌套/非嵌套标记内的全文
  • func SetDebug(bool) {} 将调试模式设置为true或false;默认为false
  • func HTML() {} HTML返回特定元素的HTML代码

例子

package main

import (
	"fmt"
	"os"

	"github.com/anaskhan96/soup"
)

func main() {
	resp, err := soup.Get("http://zhaohaiyu.com")
	if err != nil {
		os.Exit(1)
	}
	doc := soup.HTMLParse(resp)
	links := doc.Find("div", "class", "res-cons").FindAll("article","class","post")
	fmt.Println(links)
	for _, link := range links {
		l := link.Find("a")
		fmt.Println(l.Text(), "-------->", l.Attrs()["href"])
	}
}

结果

【置顶】golang目录 --------> https://zhaohaiyu.com/post/go/go_catalog/
go语言文件系统 --------> https://zhaohaiyu.com/post/go/go_file/
Flex --------> https://zhaohaiyu.com/post/javascript/flex/
makefile --------> https://zhaohaiyu.com/post/go/makefile/
air热加载 --------> https://zhaohaiyu.com/post/go/air/
thrift的介绍及其使用 --------> https://zhaohaiyu.com/post/go/thrift/
golang中间件的实现 --------> https://zhaohaiyu.com/post/go/middleware/
zap高性能日志 --------> https://zhaohaiyu.com/post/go/zap/
viper配置管理 --------> https://zhaohaiyu.com/post/go/viper/
proto Prometheus --------> https://zhaohaiyu.com/post/go/promethues/
golang语言爬虫 获取城市列表和url 此代码为跟着Google资深工程师讲解Go语言单任务版爬虫的获取城市列表和url的代码 立即下载

相关推荐

Go-soup-是一个类似于BeautifulSoup采用Go开发的Web爬虫

soup - 是一个类似于BeautifulSoup采用Go开发的Web爬虫

go语言爬虫解析html,Golang如何解析Html代码

搜索热词Golang如何解析HTML代码用Golang的朋友都知道如果我们要从HTML中提取一些内容、比如title或者是h2在或者是一些其他的HTML的内容、在Golang里面我们如果要自己写代码来提取还是相当的麻烦的;由于我之前在写Pyhon的爬虫的时候也需要解析HTML标签;所以用过PyQuery和BS4.这次在用Golang写爬虫的时候就留意了一下是否有Golang版本的Query。git...

weixin_42202605的博客 2479

Minecraft Forge模组开发入门:从环境搭建到事件监听实战

事件驱动编程是一种基于事件和事件监听器的软件架构模式,其核心原理是通过事件总线实现组件间的松耦合通信。在游戏开发领域,这种模式能够有效处理玩家交互、状态变更等异步操作,具有高度的灵活性和可扩展性。Java作为面向对象编程语言,通过注解和反射机制为事件驱动提供了天然支持。Minecraft模组开发正是事件驱动编程的典型应用场景,开发者可以利用Forge框架提供的事件总线监听游戏内各种行为。本文以Minecraft Forge模组开发为例,详细讲解如何通过Gradle构建工具搭建开发环境,并实现自定义方块注册和

culi3182的博客 395

Apache Log4j2配置文件详解:XML、JSON、YAML三种格式对比

Apache Log4j2是一个开源的日志记录框架,用于记录应用程序的日志信息。适合需要记录和管理应用程序日志的开发者。特点包括灵活的日志记录方式、性能优越和易于配置。本文将详细对比XML、JSON和YAML三种配置文件格式,帮助开发者选择最适合自己项目的配置方式。 [![Apache Log4j2 Logo](https://raw.gitcode.com/gh_mirrors/log/log

gitblog_00039的博客 691

三极管稳压电路仿真分析

Z1的负极连接到三极管的基极,三极管发射极E是输出,形成了一个射极跟随器,也就是说,E极的电压随着B电压变化而变化,但BE之间有一个压降,一般硅管0.7V左右,假设B极是6.7V,那E极就是6.7-0.7=6V,所以就有一个公式VOUT=Vz-Vbe,可以根据VOUT来选择合适的稳压管。从稳压管的SPEC中我们可以看到,Vz@Izt这个参数,指在Izt=20mA时,稳压管的稳压值Vz=5.1V,也就是说流过稳压管的电流在20mA以上,稳压效果最佳。三极管导通之后,E点电压会升高,当升高到Vbe。

U_YAO的博客 2325

JW01二氧化碳传感器实战:5分钟搞定Arduino环境监测系统(附完整代码)

本文详细介绍了如何使用JW01二氧化碳传感器与Arduino快速搭建环境监测系统。通过简单的硬件连接和完整的代码示例,读者可以在5分钟内实现CO2浓度实时监测,并了解数据解析、常见问题解决及进阶应用扩展。JW01传感器的高精度和易用性使其成为创客和嵌入式开发者的理想选择。

kite3的博客 383

推荐开源项目:soup - Go语言中的BeautifulSoup模拟库

在网页抓取和数据提取的世界里,有一个名为`soup`的Go语言库值得关注。灵感源自Python的BeautifulSoup,这个库提供了一种直观且高效的方式来解析HTML内容,让你轻松地从网页中获取所需的数据。 ## 项目介绍 `soup`是一个小巧而强大的Web抓取工具,专为Go程序员设计。它允许你通过简单的API调用来设置HTTP头部、cookies,并执行GET和POST请求。更重要的是...

gitblog_00069的博客 640

AURIX-TC3xx-GTM详解六-DPLL(Digital PLL Module)-寄存器1-DPLL寄存器

主要有下图这些寄存器2、

m0_69929716的博客 440

构建基础爬虫:从抓取网页到数据提取

goquery是一个基于jQuery语法的Go语言HTML解析库,它提供了类似于jQuery的API,使得HTML文档的遍历和操作变得简单直观。goquery非常适合用于网络爬虫中HTML内容的解析和处理。

weixin_52938153的博客 463

Silvaco Atlas入门指南——从零开始掌握半导体器件仿真

本文为Silvaco Atlas半导体器件仿真软件的入门指南,详细介绍了从零开始掌握该工具的核心流程。内容涵盖Atlas的基本概念、仿真流程、核心文件(输入、结构、输出文件)、交互式与批处理两种操作模式,并逐步演示了如何从定义网格、划分区域、设置电极到进行掺杂、选择物理模型并求解,最终获取和分析器件特性的完整步骤。旨在帮助微电子相关专业人员和工程师快速上手这一强大的“数字实验室”,提升半导体器件设计与研发效率。

weixin_29306317的博客 401

S7-1200PLC 与温控仪表Modbus RTU通信

硬件:cpu 1214C 目的:通过Modbus RTU协议,实现对温控仪表的控制 软件:Portal V14SP1

weixin_43922025的博客 3万+

go语言提取html,Golang如何解析Html代码

Golang如何解析Html代码用Golang的朋友都知道如果我们要从HTML中提取一些内容、比如title或者是h2在或者是一些其他的HTML的内容、在Golang里面我们如果要自己写代码来提取还是相当的麻烦的;由于我之前在写Pyhon的爬虫的时候也需要解析HTML标签;所以用过PyQuery和BS4.这次在用Golang写爬虫的时候就留意了一下是否有Golang版本的Query。github是...

weixin_32349561的博客 2306

手把手教你排查Abaqus中的Johnson-Cook损伤参数:避免因d3正负号导致的仿真失败

本文详细解析了Abaqus中Johnson-Cook损伤参数d3正负号设置的关键问题,帮助用户避免因参数错误导致的仿真失败和Excessive distortion报错。通过对比不同文献定义、提供实操指南和典型错误排查流程,有效提升非线性分析的准确性和效率。

weixin_33960567的博客 355

如何使用soup构建高效数据采集系统:完整实战教程

在当今数据驱动的时代,高效的数据采集能力已成为开发者必备技能。**soup** 作为一款Go语言实现的轻量级网页解析库,以类似BeautifulSoup的友好接口,让开发者能够轻松构建强大的数据采集系统。本文将通过实战案例,带您掌握从环境搭建到高级数据提取的全流程,即使是Go语言新手也能快速上手。 ## 🚀 为什么选择soup构建数据采集系统? soup凭借其简洁的API设计和高效的DOM解

gitblog_00110的博客 433

知识图谱大模型系列之 12 LLM 知识图谱构建器:从零到 GraphRAG 使用 LLM 知识图谱生成器在 GenAI 应用中提取和使用知识图谱(教程含源码)

为了更深入地了解 LLM 知识图谱构建器,GitHub 存储库提供了大量信息,包括源代码和文档。此外,我们的文档提供了详细的入门指南,而GenAI 生态系统则提供了有关可用更广泛工具和应用程序的进一步见解。

iCloudEnd的博客 2037

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

BeautifulSoup文本提取陷阱:如何用get_text实现智能换行?

解决网页文本提取混乱问题,掌握BeautifulSoup 的 get_text 换行技巧。适用于爬虫数据清洗与内容整理,通过设置换行符参数智能分隔文本,提升可读性与处理效率。方法简单高效,值得收藏。

VarIsle的博客 589

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

网站克隆工作流模板:从静态镜像到动态渲染的完整实践

网站抓取与离线归档是技术团队构建本地知识库、沉淀项目文档的常见需求。面对结构复杂、渲染方式多样的站点,仅靠单一命令难以完成高质量的克隆。理解静态渲染与动态渲染的区别是关键:传统wget适合服务端输出HTML的站点,而基于Vue/React的SPA文档站则需借助Playwright等无头浏览器执行脚本后抓取。一套可复用的工作流模板,将侦察、抓取、渲染、资源重写、内容提取等环节串联为配置驱动的流水线,既能自动判断站点类型,又能通过范围控制与合规设定降低风险。无论是离线文档归档、静态站点留档,还是为大模型构建私有

weixin_34396902的博客 334

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

基于Kagi API构建AI联网搜索技能:打破知识截止限制

在人工智能应用开发中,大语言模型的知识截止日期是普遍存在的技术瓶颈,这限制了其在需要实时信息的场景下的应用价值。为了解决这一问题,联网搜索功能成为关键技术方案,它通过调用外部API获取最新信息,并结合智能解析与整合技术,为AI助手赋予实时信息处理能力。从技术原理上看,这涉及意图解析、查询构造、异步并发处理和信息可信度评估等多个环节,最终实现从海量网络数据中提取有价值信息并生成有据可查的回答。在工程实践中,Python生态的requests、aiohttp和BeautifulSoup等库为构建这样的系统提供了

weixin_34372728的博客 404

go语言处理html文件,golang解析html网页的方法

1.先看一下整个结构:主要是web和html目录,分别存放go代码和html相关的资源文件。2.html代码比较简单,代码如下:Go web 用户名:密码:就是显示一张图片,然后加登陆表单。3.而go代码也比较简单,如下:package mainimport ("fmt""html/template""log""net/http")func login(w http.ResponseWriter,...

weixin_32451453的博客 2391

如何使用 Golang 解析 HTML?

现在你已经了解了如何使用 Go 解析 HTML。Node Parser 适用于完整页面遍历,Tokenizer 更便于处理大型页面中特定数据提取。想要更多功能,可以尝试第三方工具。AmazonLinkedIn如何使用 Golang 解析 HTML?t=P1C7亮数据-网络IP代理及全网数据一站式服务商屡获殊荣的代理网络、强大的数据挖掘工具和现成可用的数据集。亮数据:网络数据平台领航者https://www.bright.cn?

亮数据 Bright Data 的博客 1200

goquery 解析不了noscript

今天在用goquery的时候 解析noscript标签的时候。发现一直获取不到里面的元素。 google得到。需要去除noscript标签。 s.Find("noscript").SetHtml(s.Find("noscript").Text()) 转载于:https://www.cnblogs.com/tl542475736/p/11458216.html...

weixin_30556959的博客 276

golang解析html网页

1.先看一下整个结构: 主要是web和html目录,分别存放go代码和html相关的资源文件。 2.html代码比较简单,代码如下: Go web 用户名: 密码: 就是显示一张图片,然后加登陆表单。 3.而go代码也比较简单,如下: package main import ( "fmt" "h

rambo_huang的博客 1万+

Golang爬虫实战从零开始(一) 准备工作

这是 Golang 爬虫(狭义的说应该是网络爬虫)系列教程,也是我本人从零开始使用 Golang 进行爬虫学习的总结。 我是一个 PHP/Golang 开发工程师,同时对前端也有一定的经验,之前并没有 Golang 程序进行过爬虫。 文中的写法和格式风格都是依据经验和现学现用,如果有不符合代码规范或最佳实践的地方,还请不吝赐教。 为什么选择Golang爬虫 目前主流爬虫大多都是使用 Python 来实现,因为 Python 有很多爬虫的配套设施,单纯从开发效率和简单易用性来说,确实是最佳的选择。但是因为我本

fpy5627的博客 1018

golang项目结构日记

最近再玩golang,在研究如何导入自己的模块的时候很是头疼。基本golang槽糕的设计——project既要设置$GOPATH又对项目结构有一定的要求(缺少一定的自由)(当然golang糟糕的设计远不止这方面,越是深入了解越是讨厌)。google好久才知道如何配置。网上blog里要么是同一篇文章各种转载(他喵的还不注明),要么不够清晰,各种尝试后终于成功,记录如下: 进入终端输入命令

danny_amos的博客 1675

Golang原生爬虫 简单爬虫实现 不依赖第三方包库 方便理解技术原理 (二)

上一篇回顾:Golang原生爬虫 简单爬虫实现 不依赖第三方包库 方便理解技术原理 (一) 程序首次执行成功后,我们已经成功获取了源页面所提供的链接地址。下面我们自然要做的就是通过计时器来爬抓链接列表里的地址。 下一步就是要通过地址列表里的地址逐一爬抓,去掉已经爬抓过的练级,并记录新的有效链接到地址列表里。 再看一下我们的main函数: func main() { if ch...

Master 6799
上一篇: go zap 高性能日志
下一篇: go gin 框架介绍及使用
daemon365
博客等级 码龄2年 905粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值