ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何用VBA的xmlhttp对象,去获取简单的框架页面的多页数据(框架页面有防盗链机制)

如何用VBA的xmlhttp对象,去获取简单的框架页面的多页数据(框架页面有防盗链机制)

作者:绿色风 分类: 时间:2022-08-17 浏览:141
楼主
xmyjk
Q:主页面的地址是:http://116.252.221.174/guawang_sys/index_gw.asp?guawangid=FCK13511920120118t
   需要获取其37页的网页数据。

A:通过其中的网页源代码:“<iframe name="import_frame" width=100%
height=94% src="guawang_tables.asp?guawangid=FCK13511920120118t" frameborder=auto></iframe>”
可知,其主要数据存在于http://116.252.221.174/guawang_sys/guawang_tables.asp?guawangid=FCK13511920120118t中,但是,并从源代码和抓包工具可知,在URL后面加上page=1(至37)的参数,可以得到以后每页的数据。
但是,例如直接使用http://116.252.221.174/guawang_sys/guawang_tables.asp?guawangid=FCK13511920120118t&page=1,网页会提示如图
 

因此,简单的一个步骤,委屈求全,先访问主页面后,然后再访问框架页面,直接简单的绕过网页的框架防护机制。
代码如下:
  1. Option Explicit
  2. Sub a()
  3.     Dim ie1 As Object, dmt As Object, r As Object, i As Long, x As Long, j As Long, p As Long

  4.   '  Load UserForm1
  5.    ' UserForm1.Show 0

  6.     [a1].CurrentRegion.Offset(1).Clear
  7.     Cells.NumberFormat = "@"
  8.     Set ie1 = UserForm1.WebBrowser1

  9.     With ie1
  10.         .Navigate "http://116.252.221.174/guawang_sys/index_gw.asp?guawangid=FCK13511920120118t" '访问主页面
  11.         Do Until .ReadyState = 4 '等待页面加载完毕
  12.             DoEvents
  13.         Loop
  14.         For x = 1 To 37 '分别访问数据页面37页
  15.             .Navigate "http://116.252.221.174/guawang_sys/guawang_tables.asp?page=" & x & "&guawangid=FCK13511920120118t" '对子页面进行分别的导航
  16.             Do Until .ReadyState = 4 '等待页面加载完毕
  17.                 DoEvents
  18.             Loop
  19.             Set dmt = .Document '获取文档体
  20.             For i = 5 To dmt.All.tags("table").Length - 2 '获取数据所在的表格
  21.                 Set r = dmt.All.tags("table")(i).Rows '获取数据表格的行
  22.                 p = [a65536].End(3).Row + 1 '在现有数据的下一行续写
  23.                 For j = 0 To r(0).Cells.Length - 1 '历遍表格每一列数据
  24.                     Cells(p, j + 1) = r(0).Cells(j).innerText '取数
  25.                 Next
  26.                 Set r = Nothing
  27.             Next
  28.             Set dmt = Nothing
  29.         Next
  30.     End With
  31.     Set ie1 = Nothing

  32.     [a1].CurrentRegion.Columns.AutoFit

  33. End Sub

123.zip
2楼
亡者天下
弦月的VBA也不错啊,又一高手,学习
3楼
fly1425
不是很明白```学习中```
4楼
5517772
这个代码用的是 WebBrowser  控件吧,那里是xmlhttp对象
5楼
水星钓鱼
这个代码没有用哦
6楼
老糊涂
学习
7楼
hhaa999
学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap