vba抓取网页数据([复制链接]uranus1997165主题好友261积分幼儿园大班金币1704个积分)

优采云 发布时间: 2022-04-07 18:02

  vba抓取网页数据([复制链接]uranus1997165主题好友261积分幼儿园大班金币1704个积分)

  用VBA提取网页数据的四种方法 更多2012-7-51042 编辑 嗯,这是398部长给我的一个小练习,分享给大家,然后等398部长讲解。一共做了4个方法,在此感谢August Sleepwalking的帮助和建议。题目是在如下网页中提取店铺名称和地址:(我没做多页,我懒了)searchsearchstore.htmloption.cityname=%CE%C2%D6%DD&option.category=4&option.distance= 2000&pageNo=1 XMLHTTP对象,速度不错,受网页源代码变化影响,但处理网页源文件最方便自由。InternetExplorer 对象,速度一般,受网页源代码改动影响,需要激活IE,不喜欢。QueryTables 对象的平均速度最快,基本不受网页源代码变化的影响。想获取多页数据的时候比较麻烦,还有一个额外的网页查询区需要删除。

  WebBrowser对象,先是速度不如XMLHTTP,然后很快,受网页源代码变化的影响,原理和InternetExplorer一样,就是多出来的控件不好看工作表,并且只能通过缩小控件来隐藏。每种方法都有自己的优缺点,要根据实际情况来选择合适的方法。个人觉得从网页中提取数据是没有技巧的。归根结底,其原理基本上是提取网页的源代码,然后对其进行分析处理。在 VBA 中,使用字符串处理可能更容易理解。其实也可以使用获取网页元素的方法。例如,使用了一些这样的技术,但是因为对网页的元素不熟悉,如果想要方便的方法还需要多了解网页的结构和代码。PS:记得看我鼠标写的火狐浏览器脚本。看来只能列举不同网页源码的共同点来写了。似乎很难认为 100% 通用。第一个附件:8yEsMVej.rar (25.12 KB,下载次数1318)由于网页源代码变了,08-7-14重新编辑上传。 [本帖已被作者于2008-7-14 22817编辑] jKtC2df0.rar 24.33 KB,下载1420次 [分享] VBA提取网页数据(4种方法)0JQmXNaH。 rar 25.@ >44 KB, 下载次数1660 [分享] VBA提取网页数据(4种方法) 第一种方法不对,是什么原因?可能是Object变量传递的问题,所以试试 Sub test() Dim StringDim arr Dim LongDim LongDim t1 LongDim t2 GetSource("") arr Filter(Split(s,""), "Address", True) UBound( arr)t1 InStr(1,arr(i), InStr(t1,arr(i), Mid( arr(i), t1, t2 t1)

  . . . 请参阅我的第二个附件,它解决了问题,它应该。. . . . 我试过的感觉是XML速度第一,QueryTables第二,差不多一点点;WebBrowser 第三;IE 是最慢的,它会打开网页。哈哈,我明白了,他的原理是通过Msxml2.XMLHTTP提取网页内容,相当于我们点击ie时从源文件中提取txt文档的内容。然后使用字符串处理函数split找到我们想要的信息,放入数组中。之后,将数组中的内容写入到excel分页和详情页的URL中,可以找到。理论上,网页上显示的所有内容都可以提取出来 :) 我希望我能把它搞定:) 相当于提取了对方在互联网上发布的信息。数据库内容。然后就可以灵活使用数据库分析工具更改 Private Sub CommandButton4_Click() Dim doc ObjectDim txt1 StringDim IntegerDim WebBrowser1.Navigate"" Do Until WebBrowser1.ReadyState READYSTATE_COMPLETEDoEvents Loop Set doc ErrorResume Next ReDim arr(1 doc.all.Lengthtxt1 txt1End WebBrowser1.Navigate"about:blank" End Sub

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线