VBA之正则表达式(43)-- 从网页中提取指定数据

这篇具有很好参考价值的文章主要介绍了VBA之正则表达式(43)-- 从网页中提取指定数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实例需求:由网页中提取下图中颜色标记部分内容,网页中其他部分与此三行格式相同。

VBA之正则表达式(43)-- 从网页中提取指定数据,数据清洗,VBA,正则,正则匹配,提取网页,网页,正则,正则提取


方法1

Sub Demo()
    Dim objRegex As Object
    Dim inputString As String
    Dim objMatches As Object
    Dim objMatch As Object
    Set objRegex = CreateObject("VBScript.RegExp")
    objRegex.Pattern = "id=[^>]+|[^>]+&#[^<]+"
    objRegex.Global = True
    inputString = Cells(1,1).Value
    Set objMatches = objRegex.Execute(inputString)
    For Each objMatch In objMatches
        Debug.Print objMatch
    Next objMatch
End Sub

【代码解析】
第6行代码创建正则对象。
第7行代码设置正则匹配模式。

正则表达式 说明
id=[^>]+ 匹配以id=开头,后面跟一个或者多个除>之外的任意字符
[^>]+&#[^<]+ 匹配以一个或者多个除>之外的任意字符开头,后面为&#,之后为一个或者多个除<之外的任意字符

第8行代码设置正则全局匹配。
第9~11行代码将待处理字符串保存在变量中。
第12行代码执行正则匹配。
第13~15行代码循环遍历匹配结果,第14行代码输出到立即窗口,结果如下图所示。
VBA之正则表达式(43)-- 从网页中提取指定数据,数据清洗,VBA,正则,正则匹配,提取网页,网页,正则,正则提取


方法2

使用常规正则匹配模式,此正则模式比较容易理解,不再讲解其含义。
方法1中灵活使用了字符集[^……],限制非某字符,也就实现了以该字符为边界的效果,其匹配模式字符串更简洁。

Sub Demo2()
    Dim objRegex As Object
    Dim inputString As String
    Dim objMatches As Object
    Dim objMatch As Object
    Set objRegex = CreateObject("VBScript.RegExp")
    objRegex.Pattern = "(id=""[^""]+"").*?<text.*?>(.*?)<\/text>"
    objRegex.Global = True
    inputString = Cells(1,1).Value
    Set objMatches = objRegex.Execute(inputString)
    For Each objMatch In objMatches
        Debug.Print "ID: " & objMatch.SubMatches(0)
        Debug.Print "Text: " & objMatch.SubMatches(1)
        Debug.Print "----------------"
    Next objMatch
End Sub

VBA之正则表达式(43)-- 从网页中提取指定数据,数据清洗,VBA,正则,正则匹配,提取网页,网页,正则,正则提取


示例数据文章来源地址https://www.toymoban.com/news/detail-723644.html

<g class="node" transform="translate(1980, 861.0625)" id="node-946327"><rect width="120" height="36" transform="translate(-60,-18)" rx="18" ry="18" stroke="darkseagreen" stroke-width="2" style="fill: rgb(255, 255, 255);"></rect><circle r="18" transform="translate(-42,0)" style="fill: url(&quot;#image-person-old&quot;);"></circle><text transform="translate(18,0)" y="4" text-anchor="middle" style="fill-opacity: 1; font: 12px sans-serif;">Байтайла&#1179;</text><text transform="translate(18,0)" y="10" text-anchor="middle" style="fill-opacity: 1; font: 8px sans-serif;"></text></g>

<g class="node" transform="translate(1980, 907.0625)" id="node-946328"><rect width="120" height="36" transform="translate(-60,-18)" rx="18" ry="18" stroke="darkseagreen" stroke-width="2" style="fill: rgb(255, 255, 255);"></rect><circle r="18" transform="translate(-42,0)" style="fill: url(&quot;#image-person-old&quot;);"></circle><text transform="translate(18,0)" y="4" text-anchor="middle" style="fill-opacity: 1; font: 12px sans-serif;">Байто&#1171;ай</text><text transform="translate(18,0)" y="10" text-anchor="middle" style="fill-opacity: 1; font: 8px sans-serif;"></text></g>

<g class="node" transform="translate(1980, 953.0625)" id="node-946329"><rect width="120" height="36" transform="translate(-60,-18)" rx="18" ry="18" stroke="darkseagreen" stroke-width="2" style="fill: rgb(255, 255, 255);"></rect><circle r="18" transform="translate(-42,0)" style="fill: url(&quot;#image-person-old&quot;);"></circle><text transform="translate(18,0)" y="4" text-anchor="middle" style="fill-opacity: 1; font: 12px sans-serif;">Ораз&#1241;л&#1110;</text><text transform="translate(18,0)" y="10" text-anchor="middle" style="fill-opacity: 1; font: 8px sans-serif;"></text></g>

到了这里,关于VBA之正则表达式(43)-- 从网页中提取指定数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jmeter正则表达式提取

    Jmeter提供边界值提取、正则表达式提取、JSON提取、xpath提取 可以提取接口返回体(响应结果)的内容。实现从上一个返回体中获取下一个请求体中需要的数据 例如: Jmeter接口测试时,许多请求都需要用到token,而账号登录返回的token是动态的。固定的token账号重新登录或退出

    2024年02月09日
    浏览(35)
  • 正则表达式的神奇世界:表达、匹配和提取

    正则表达式,这个看起来像密林中的迷宫的工具,既神秘又令人着迷。它是编程世界中的一门魔法,有着神奇的能力。你是否曾经在寻找或解析文本时感到束手无策?或许你想要从海量数据中提取特定信息?这正是正则表达式可以派上用场的时候。本文将带你探索这个神奇的

    2024年02月07日
    浏览(49)
  • java通过正则表达式提取信息

    工具类如下 使用以及结果 下面这个即为data的原文 结果 推荐这个网站,看起来更直观 正则在线 真正比较难的事儿吧,是怎么写这个正则表达式 有的表达式不是不能用,只是在java程序中不好用,怎么办呢,推荐用chatgpt吧,让他来帮你写表达式 第一步,先把文案发出去 第二

    2024年02月16日
    浏览(32)
  • python 正则表达式提取字符串

    1、提取字符串的场景及公式、命令 背景 :目前遇到的场景主要是以某个字符串开始、某个字符串结束,提取中间部分的字符,有的时候需要开始的字符,有时不需要,大概涉及到了4种情况,场景及处理方式如下: 1.1 以某个字符开始、某个字符结束,期待的提取结果 包含

    2024年02月02日
    浏览(44)
  • 【python】网络爬虫与信息提取--正则表达式

            正则表达式是用来简洁表达一组字符串的表达式。是通用的字符串表达框架,简洁表达一组字符串的表达式,针对字符串表达“简洁”和“特征”思想的工具,判断某字符串的特征归属。         用处:表达文本类型的特征;同时查找或替换一组字符串;匹配字符串

    2024年02月19日
    浏览(60)
  • jmeter常用的提取器(正则表达式和JSON提取器)

    jmeter常用的后置处理器有两种提取数据: 1、JSON提取器    获取后可以将变量token引用到其他所需要的地方 (正则表达式和JSON提取器): 2023接口自动化测试框架必会两大神器:正则提取器和Jsonpath提取器_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1824y1M7GA/?spm_id_from=333.999.0.0vd_s

    2024年02月16日
    浏览(38)
  • python 自动化数据提取之正则表达式

     前    言 我们在做接口自动化的时候,处理接口依赖的相关数据时,通常会使用正则表达式来进行提取相关的数据,今天在这边和大家聊聊如何在python中使用正则表达式。 正则表达式 ,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular

    2024年02月14日
    浏览(44)
  • Python正则表达式提取文本中的IP地址

    Python正则表达式提取文本中的IP地址 在Python中,使用正则表达式可以方便地从文本中抽取符合规则的字符串。其中,IP地址是一个常见的需要抽取的内容之一。IP地址通常由四段数字组成,每段数字的取值范围是0~255。下面将演示如何在Python中使用正则表达式抽取文本中的IP地

    2024年02月16日
    浏览(48)
  • VBA提高篇_ 31 VBA调用正则表达式_RegExp.Pattern/Global/Execute(s)/Replace(s,r)

    RegExp对象: 属于外部对象,对应的变量需要声明为Object对象,并使用CreateObject函数创建 用于创建各种外部对象,只要将该对象的完整类名作为参数(字符串形式),即可返回一个该类的对象 例: CreateObject(“word.application”),返回一个微软的word对象,用于打开和修改Word对象 结果存入在M

    2024年02月09日
    浏览(35)
  • 正则表达式系列|(以xx开头xx结尾提取、切分、替换)

    章节 第一章链接: 正则表达式系列|(以xx开头xx结尾提取切分) 正则表达式是对字符串操作的一种逻辑公式;作用:检索、替换那些符合某个模式(规则)的文本,可以通过一些设定的规则来匹配一些字符串,是一个强大的字符串匹配工具。 结果 结果 matcher.group(1)表示获取第一

    2024年02月14日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包