ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] 网页数据采集---网页文档解析篇(json/html/xml)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2017-6-10 23:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:网页交互
这又是一门学问呀,顶下先

TA的精华主题

TA的得分主题

发表于 2017-6-17 16:54 | 显示全部楼层
dalao,HTMLDocument,有一个疑问,我已经整了一个下午了,无解,请教一下。

我先把已经打开的IE窗口赋值给变量ie
然后Set doc = ie.document
现在想得到特定的值或者特定的innertext
如图右下角的value=“××合同”
但是我发现这些tag是</td>里面的东西好像怎样都拉不出来,想问下有没有办法将整个Document 转成字符串,我自行搜索
捕获.PNG

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-6-17 18:11 | 显示全部楼层
codexq 发表于 2017-6-17 16:54
dalao,HTMLDocument,有一个疑问,我已经整了一个下午了,无解,请教一下。

我先把已经打开的IE窗口赋 ...
  1. '以“value=“××合同”为例:
  2.     sValue = doc.getElementById("合同名称").Value
复制代码

TA的精华主题

TA的得分主题

发表于 2017-6-17 20:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 codexq 于 2017-6-17 21:04 编辑

doc.getElementById("合同名称") is nothing=true
遍历doc.all(i).id,不存在合同名称的id

结论document里面不存在“合同名称”的element

但是我能够在IE浏览器F12中看到

会不会是网站问题,这是眀源系统的内网。。。(我确定没有取错document,因为我可以找到其他element的id)

另外请教一下,有没有办法将document像XMLhttp一样,转换为字符串?这样就方便查找了
其实个人更喜欢xmlhttp,查询快速而且更加直观,但是XMLHTTP一定要send url+send password,关键是sendpassword可能会导致我IE浏览器的眀源或者OA系统下线。所以现在才会在IE打开,然后用VBA通过shell查询到打开的页面并抽取HTMLdocument

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-6-17 21:28 | 显示全部楼层
codexq 发表于 2017-6-17 20:45
doc.getElementById("合同名称") is nothing=true
遍历doc.all(i).id,不存在合同名称的id

你把整个返回文档(doc.DocumentElement.innerHTML)写进“即时窗口”或记事本中看看是怎么回事。

TA的精华主题

TA的得分主题

发表于 2017-6-18 02:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liu-aguang 发表于 2017-6-17 21:28
你把整个返回文档(doc.DocumentElement.innerHTML)写进“即时窗口”或记事本中看看是怎么回事。

<!DOCTYPE html>
<html id="compontentHtml" style="height: 100%;...</html>

这一段全部没有了,主题内容都在“<html id="compontentHtml" style="height: 100%;...</html>”里面

这个抓的是OA系统
捕获.PNG

TA的精华主题

TA的得分主题

发表于 2017-6-18 02:23 | 显示全部楼层
本帖最后由 codexq 于 2017-6-18 11:39 编辑
liu-aguang 发表于 2017-6-17 21:28
你把整个返回文档(doc.DocumentElement.innerHTML)写进“即时窗口”或记事本中看看是怎么回事。

估计是HTML5版本部分消失了
Webbrowser的版本是理论上IE7(我的是OFFICE 2016),IE7应该不兼容HTML5吧?正在摸索怎么讲webbrowser升到IE11

TA的精华主题

TA的得分主题

发表于 2017-6-18 11:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
liu-aguang 发表于 2017-6-17 21:28
你把整个返回文档(doc.DocumentElement.innerHTML)写进“即时窗口”或记事本中看看是怎么回事。

代码如下:

Sub Main()
(略)
   Set IE = FindWin("特定的URL片段")
   Set doc = IE.document

   返回 doc.DocumentElement.innerHTML
End Sub

'这段函数是抄其他帖子的,返回特定网页的IE object
Function FindWin(ByVal strRef As String) As Object
    Dim objWin As Object
    For Each objWin In CreateObject("Shell.Application").Windows
        Do While objWin.ReadyState <> 4 Or objWin.Busy
            DoEvents
        Loop
        If LCase(TypeName(objWin.document)) = "htmldocument" Then
            MsgBox objWin.LocationURL
            If objWin.LocationURL Like "*" & strRef & "*" Then
                Set FindWin = objWin
                Exit For
            End If
        End If
    Next
    Set objWin = Nothing
End Function

TA的精华主题

TA的得分主题

发表于 2017-6-19 13:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liu-aguang 发表于 2017-6-17 21:28
你把整个返回文档(doc.DocumentElement.innerHTML)写进“即时窗口”或记事本中看看是怎么回事。

我终于找到答案了T_T

document.body.innerhtml只能获得iframe的outerhtml,是不能抓到innerhtml的,所以才会出现以下语句消失的情况。

<!DOCTYPE html>
<html id="compontentHtml" style="height: 100%;...</html>

网上搜到的答案是:document.getElementById("MyFrame").contentWindow.document.innerhtml  (这里MyFrame就是iFrame的ID),这样就可以了。

当然也有可能存在iframe套iframe的情况,这时候就要不断的虚幻套用上述语句

TA的精华主题

TA的得分主题

发表于 2017-7-10 12:16 | 显示全部楼层
liu-aguang老师:
    因单位禁用office, 只能使用wps,导致access无法使用,我想用xml作为数据库使用,这涉及到数据库的创建、数据删除、数据追加、数据检索等内容
    您能否写一个简单的例子?
   
     另外,我还不知道用xml文件代替access这个想法是否可行,比如速度?容量(比如有500万行数据)?
     至于数据内容,每行只有姓名、身份证、账号三列
     
     
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-20 20:39 , Processed in 0.041670 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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