ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1414|回复: 9

[求助] VBA批量查询网页数据并提取查询结果!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-28 10:58 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
求教各位大师,现需要通过VBA对指定网址   http://www.csres.com/s.jsp?keyword=GB%2050011-2001&pageNum=1     进行批量查询,其中keyword=为关键字位置,GB 50011-2001为关键字,

查询结果
QQ截图20230328105055.png
现需要使用VBA,对B列的N个待核查标准编号进行查询,并抓取查询到的“标准名称        发布部门        实施日期        状态”等信息填入相应位置。
image.png
期待大师赐教。

求助2020328.rar (17.74 KB, 下载次数: 22)

TA的精华主题

TA的得分主题

发表于 2023-3-28 14:04 | 显示全部楼层
需要通过VBA对指定网址   http://www.csres.com/s.jsp?keyword=GB%2050011-2001&pageNum=1     进行批量查询,其中keyword=为关键字位置,GB 50011-2001为关键字。
要求:使用VBA,对B列的N个待核查标准编号进行查询,并抓取查询到的“标准名称        发布部门        实施日期        状态”等信息填入相应位置。

2023/3/28 14:02:14

下面是一个可以实现你要求的 VBA 代码,它使用了 XMLHTTP 对象来向指定网址发送 HTTP 请求,并使用 XMLDocument 对象解析响应的 HTML 页面。请将以下代码复制到一个名为 QueryStandards 的新模块中,并将其保存在你的 Excel 工作簿中:

Option Explicit

Sub QueryStandards()
    ' 设置参数
    Dim url As String
    Dim keyword As String
    Dim standardNums As Variant
    Dim i As Long
   
    url = "http://www.csres.com/s.jsp?"
    keyword = "GB 50011-2001"
    standardNums = Range("B1:B" & Cells(Rows.Count, "B").End(xlUp).Row).Value
   
    ' 向指定网址发送 HTTP 请求并获取响应
    Dim xhr As Object
    Set xhr = CreateObject("MSXML2.XMLHTTP")
   
    For i = LBound(standardNums) To UBound(standardNums)
        ' 构造查询字符串
        Dim queryStr As String
        queryStr = "keyword=" & Replace(keyword, " ", "+") & "&pageNum=1&choose=" & standardNums(i, 1) & "&standards=undefined&type=undefined&uuid=db4a4eaa-2f06-4c20-a25f-60e34dfe9cb9&source=search&filter=undefined"
        
        ' 发送 HTTP 请求并等待响应
        xhr.Open "POST", url & queryStr, False
        xhr.Send
        
        ' 解析响应内容
        Dim xmlDoc As Object
        Set xmlDoc = CreateObject("MSXML2.DOMDocument")
        xmlDoc.LoadXML xhr.responseText
        
        ' 获取查询结果
        Dim name As String
        Dim pubDept As String
        Dim effDate As String
        Dim status As String
        
        ' 从 HTML 页面中解析标准名称、发布部门、实施日期和状态
        With xmlDoc.getElementsByTagName("div")
            name = .Item(31).innerText
            pubDept = .Item(45).innerText
            effDate = .Item(59).innerText
            status = .Item(73).innerText
        End With
        
        ' 将查询结果填入 C 列、D 列、E 列、F 列
        With Cells(i, 3)
            .Value = name
            .Font.Bold = True
        End With
        Cells(i, 4).Value = pubDept
        Cells(i, 5).Value = effDate
        Cells(i, 6).Value = status
    Next i
   
    ' 清理资源
    Set xhr = Nothing
    Set xmlDoc = Nothing
End Sub
这个代码首先设置了需要使用的参数,包括网址、关键字和标准编号。然后,它循环遍历 B 列中的每个标准编号,并向指定网址发送 HTTP 请求以获取响应。接着,它使用 XMLDocument 对象解析响应的 HTML 页面,并从页面中提取标准名称、发布部门、实施日期和状态等信息。最后,它将这些信息写入到 C 列、D 列、E 列和 F 列中,并清理所使用的资源。

请注意,在使用这个代码之前,你需要确保已正确设置好参数。此外,由于代码使用了 XMLHTTP 和 XMLDocument 对象,请确保已正确引用 Microsoft XML 库。可以在 VBA 编辑器的 "工具" 菜单中选择 "引用",然后勾选 "Microsoft XML, v6.0"(或者更高版本)来设置该库的引用。

TA的精华主题

TA的得分主题

发表于 2023-3-28 16:45 | 显示全部楼层
天空兔兔兔兔 发表于 2023-3-28 14:04
需要通过VBA对指定网址   http://www.csres.com/s.jsp?keyword=GB%2050011-2001&pageNum=1     进行批量查 ...

chat 给出的答案??这也太强了
CreateObject("MSXML2.DOMDocument") 这里可以用HTMLfile
31 ,45,59,73可能不稳定,稍微改一下就可以

TA的精华主题

TA的得分主题

发表于 2023-3-29 19:40 | 显示全部楼层
chat
该代码通过循环读取 B 列中的标准编号,构造查询网址,并使用 HTTP 请求获取查询结果页面的 HTML 内容,然后解析 HTML 内容,提取出相应的信息,并填写到 C、D、E、F 列中。
请将以上代码复制到 VBA 编辑器中的新模块中,并在您的 Excel 文件中执行该子程序即可。在执行过程中,请确保您的计算机已连接到互联网,并且查询网址可用。
1.png
2.png

TA的精华主题

TA的得分主题

发表于 2023-3-30 11:26 | 显示全部楼层
这个网站有访问次数限定,无法测试了,你看看

网抓.rar

32.84 KB, 下载次数: 78

TA的精华主题

TA的得分主题

发表于 2023-3-30 23:53 | 显示全部楼层
本帖最后由 smsn 于 2023-4-1 01:48 编辑

code.gif

code.rar

1.1 KB, 下载次数: 51

TA的精华主题

TA的得分主题

发表于 2023-7-8 05:38 | 显示全部楼层
有谁接网络抓取代码设计业务的,请联系我,QQ:710503690

TA的精华主题

TA的得分主题

发表于 2023-7-8 09:22 | 显示全部楼层
强歌 发表于 2023-7-8 05:38
有谁接网络抓取代码设计业务的,请联系我,QQ:710503690

我看看 1067039126

TA的精华主题

TA的得分主题

发表于 2024-8-8 01:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
网抓学习学习

TA的精华主题

TA的得分主题

发表于 2024-8-8 23:00 | 显示全部楼层
perfect131 发表于 2023-3-29 19:40
chat
该代码通过循环读取 B 列中的标准编号,构造查询网址,并使用 HTTP 请求获取查询结果页面的 HTML ...

大佬vpn可以网抓?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 10:40 , Processed in 0.046626 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表