vba 网页数据抓取

vba 网页数据抓取

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

网站优化优采云 发表了文章 • 0 个评论 • 92 次浏览 • 2021-09-13 08:17 • 来自相关话题

  vba 网页数据抓取([复制链接]uranus1997165主题好友261积分幼儿园大班金币1704个积分)
  从VBA中提取网页数据的四种方法【复制链接】uranus1997 165个主题好友261分幼儿园大班金币1704分261个帖子1510最佳回复留言13电梯直达1 发表于2008-2-25 0449 看看就好这个 作者浏览更多 2012-7-51042 编辑 嗯,这是398部长给我的一个小练习,贴出来分享,然后等398部长解释。一共做了4个方法,其间感谢八月梦游者的帮助和建议。题目是从如下网页提取店名和地址:(我没提取多页,懒)searchsearchstore.htmloption.cityname=%CE%C2%D6%DD&option.catego ry=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 过滤器 (Split(s,""), "Address", True) UBound(arr)t1 InStr(1,arr(i), InStr(t1,arr(i), Mid(arr(i)) ,t1, t2 t1)Cells(k Mid(arr(i),13, InStr(1, arr(i), EndSub Private Function GetSource(sURL StringDim oXHTTP ObjectSet oXHTTP CreateObject("MSXML2.XMLHTTP")oXHTTP) .Open "GET", sURL, False oXHTTP.send GetSource oXHTTP.responseTextSet oXHTTP NothingEnd 函数每次打开excel,结果只能显示一次,不进行编码转换。
  。 . 看我的第二个附件,这个问题解决了,应该可以。 . . . 我试过的感觉是XML是速度第一,QueryTables次之,差不多一点点; WebBrowser 是第三个; IE 是最慢的,它会打开网页。哈哈,我明白了,他的原理是通过Msxml2.XMLHTTP提取网页内容,相当于我们点击即查看源文件的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 Reddoc arr.(1) Next ReDim arr.Lengthtxt1 txt1End WebBrowser1.Navigate"about:blank" End Sub 查看全部

  vba 网页数据抓取([复制链接]uranus1997165主题好友261积分幼儿园大班金币1704个积分)
  从VBA中提取网页数据的四种方法【复制链接】uranus1997 165个主题好友261分幼儿园大班金币1704分261个帖子1510最佳回复留言13电梯直达1 发表于2008-2-25 0449 看看就好这个 作者浏览更多 2012-7-51042 编辑 嗯,这是398部长给我的一个小练习,贴出来分享,然后等398部长解释。一共做了4个方法,其间感谢八月梦游者的帮助和建议。题目是从如下网页提取店名和地址:(我没提取多页,懒)searchsearchstore.htmloption.cityname=%CE%C2%D6%DD&option.catego ry=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 过滤器 (Split(s,""), "Address", True) UBound(arr)t1 InStr(1,arr(i), InStr(t1,arr(i), Mid(arr(i)) ,t1, t2 t1)Cells(k Mid(arr(i),13, InStr(1, arr(i), EndSub Private Function GetSource(sURL StringDim oXHTTP ObjectSet oXHTTP CreateObject("MSXML2.XMLHTTP")oXHTTP) .Open "GET", sURL, False oXHTTP.send GetSource oXHTTP.responseTextSet oXHTTP NothingEnd 函数每次打开excel,结果只能显示一次,不进行编码转换。
  。 . 看我的第二个附件,这个问题解决了,应该可以。 . . . 我试过的感觉是XML是速度第一,QueryTables次之,差不多一点点; WebBrowser 是第三个; IE 是最慢的,它会打开网页。哈哈,我明白了,他的原理是通过Msxml2.XMLHTTP提取网页内容,相当于我们点击即查看源文件的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 Reddoc arr.(1) Next ReDim arr.Lengthtxt1 txt1End WebBrowser1.Navigate"about:blank" End Sub

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

网站优化优采云 发表了文章 • 0 个评论 • 92 次浏览 • 2021-09-13 08:17 • 来自相关话题

  vba 网页数据抓取([复制链接]uranus1997165主题好友261积分幼儿园大班金币1704个积分)
  从VBA中提取网页数据的四种方法【复制链接】uranus1997 165个主题好友261分幼儿园大班金币1704分261个帖子1510最佳回复留言13电梯直达1 发表于2008-2-25 0449 看看就好这个 作者浏览更多 2012-7-51042 编辑 嗯,这是398部长给我的一个小练习,贴出来分享,然后等398部长解释。一共做了4个方法,其间感谢八月梦游者的帮助和建议。题目是从如下网页提取店名和地址:(我没提取多页,懒)searchsearchstore.htmloption.cityname=%CE%C2%D6%DD&option.catego ry=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 过滤器 (Split(s,""), "Address", True) UBound(arr)t1 InStr(1,arr(i), InStr(t1,arr(i), Mid(arr(i)) ,t1, t2 t1)Cells(k Mid(arr(i),13, InStr(1, arr(i), EndSub Private Function GetSource(sURL StringDim oXHTTP ObjectSet oXHTTP CreateObject("MSXML2.XMLHTTP")oXHTTP) .Open "GET", sURL, False oXHTTP.send GetSource oXHTTP.responseTextSet oXHTTP NothingEnd 函数每次打开excel,结果只能显示一次,不进行编码转换。
  。 . 看我的第二个附件,这个问题解决了,应该可以。 . . . 我试过的感觉是XML是速度第一,QueryTables次之,差不多一点点; WebBrowser 是第三个; IE 是最慢的,它会打开网页。哈哈,我明白了,他的原理是通过Msxml2.XMLHTTP提取网页内容,相当于我们点击即查看源文件的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 Reddoc arr.(1) Next ReDim arr.Lengthtxt1 txt1End WebBrowser1.Navigate"about:blank" End Sub 查看全部

  vba 网页数据抓取([复制链接]uranus1997165主题好友261积分幼儿园大班金币1704个积分)
  从VBA中提取网页数据的四种方法【复制链接】uranus1997 165个主题好友261分幼儿园大班金币1704分261个帖子1510最佳回复留言13电梯直达1 发表于2008-2-25 0449 看看就好这个 作者浏览更多 2012-7-51042 编辑 嗯,这是398部长给我的一个小练习,贴出来分享,然后等398部长解释。一共做了4个方法,其间感谢八月梦游者的帮助和建议。题目是从如下网页提取店名和地址:(我没提取多页,懒)searchsearchstore.htmloption.cityname=%CE%C2%D6%DD&option.catego ry=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 过滤器 (Split(s,""), "Address", True) UBound(arr)t1 InStr(1,arr(i), InStr(t1,arr(i), Mid(arr(i)) ,t1, t2 t1)Cells(k Mid(arr(i),13, InStr(1, arr(i), EndSub Private Function GetSource(sURL StringDim oXHTTP ObjectSet oXHTTP CreateObject("MSXML2.XMLHTTP")oXHTTP) .Open "GET", sURL, False oXHTTP.send GetSource oXHTTP.responseTextSet oXHTTP NothingEnd 函数每次打开excel,结果只能显示一次,不进行编码转换。
  。 . 看我的第二个附件,这个问题解决了,应该可以。 . . . 我试过的感觉是XML是速度第一,QueryTables次之,差不多一点点; WebBrowser 是第三个; IE 是最慢的,它会打开网页。哈哈,我明白了,他的原理是通过Msxml2.XMLHTTP提取网页内容,相当于我们点击即查看源文件的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 Reddoc arr.(1) Next ReDim arr.Lengthtxt1 txt1End WebBrowser1.Navigate"about:blank" End Sub

官方客服QQ群

微信人工客服

QQ人工客服


线