ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何提取动态无规律变动网页地址的数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-2-28 22:26 | 显示全部楼层 |阅读模式
各位好:
原来我在证券之星取数,由于提取网页是有规律的,因此可以通过网页链接的规律变动取相关数据,方式如下:
wstr = getHTTPPage1("http://stock.stockstar.com/list/3489_1.shtml")
        start = InStr(wstr, "行业研究</h1>")
        over = InStr(wstr, "<!--列表公共区 end-->")
        body1 = Mid(wstr, start, over - start)
wstr = getHTTPPage1("http://stock.stockstar.com/list/3489_2.shtml")
        start = InStr(wstr, "行业研究</h1>")
        over = InStr(wstr, "<!--列表公共区 end-->")
        body2 = Mid(wstr, start, over - start)
wstr = getHTTPPage1("http://stock.stockstar.com/list/3489_3.shtml")
        start = InStr(wstr, "行业研究</h1>")
        over = InStr(wstr, "<!--列表公共区 end-->")
        body3 = Mid(wstr, start, over - start)
......
而现在 我想提取东方财富网   http://data.eastmoney.com/report/hyyb.html页面的所有页的表格数据,但由于点击各页地址变化是随机的(网站可能加密,地址尾部加入了随机函数),故难以再用上述同样的办法提取内容,请高手赐教。谢谢

TA的精华主题

TA的得分主题

发表于 2015-2-28 22:50 | 显示全部楼层
不管你要做什么,请先用fiddler抓包

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-2-28 22:58 | 显示全部楼层
请教 @liucqa ,能否具体讲讲。我不太明白,我是希望通过VBA实现。

TA的精华主题

TA的得分主题

发表于 2015-3-1 09:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub 按钮1_Click()
    Dim url, html, js
    url = "http://183.136.160.18/EM_DataCenter/js.aspx?type=SR&sty=HYSR&mkt=0&stat=0&cmd=2&code=&sc=&ps=10000&p=1&js=var%20suwenkai={%22data%22:[(x)],%22pages%22:%22(pc)%22,%22update%22:%22(ud)%22,%22count%22:%22(count)%22}&rt=47505758"
    Set js = CreateObject("scriptcontrol")
    js.Language = "jscript"
    With CreateObject("msxml2.xmlhttp")
        .Open "GET", url, False
        .send
        js.addcode (.responsetext)

        slen = js.eval("suwenkai.data.length") - 1
        For i = 0 To slen
            ar = Split(js.eval("suwenkai.data[" & i & "]"), ",")
            Cells(i + 2, 1).Resize(1, UBound(ar)) = ar
        Next
    End With
End Sub

stock.stockstar.com.zip

12.94 KB, 下载次数: 74

TA的精华主题

TA的得分主题

发表于 2015-3-1 10:12 | 显示全部楼层
suwenkai 发表于 2015-3-1 09:29
Sub 按钮1_Click()
    Dim url, html, js
    url = "http://183.136.160.18/EM_DataCenter/js.aspx?typ ...

又一个使用VBA解析JSON格式的网页的实例,多谢分享!

TA的精华主题

TA的得分主题

发表于 2015-3-1 11:31 | 显示全部楼层
也来凑个热闹
  1. Sub Test20150301()
  2.     Dim Url As String, St As String
  3.     Dim js As Object
  4.     Dim arrdata(1 To 100000, 1 To 11), ar
  5.     Url = "http://183.136.160.18/EM_DataCenter/js.aspx?type=SR&sty=HYSR&mkt=0&stat=0&cmd=2&code=&sc=&ps=1&js=(pc),(x)&p=1&rt=" & Rnd
  6.     Set js = CreateObject("MSScriptControl.ScriptControl")
  7.     js.Language = "javascript"
  8.     With CreateObject("MSXML2.XMLHTTP")
  9.         .Open "GET", Url, False
  10.         .send
  11.         '获取总记录数
  12.         St = .responsetext: St = Split(St, ",")(0)
  13.         '改变参数,一次性读取
  14.         Url = "http://183.136.160.18/EM_DataCenter/js.aspx?type=SR&sty=HYSR&mkt=0&stat=0&cmd=2&code=&sc=&ps=" & St & "&p=1&js=var%20dy={%22data%22:[(x)],%22pages%22:%22(pc)%22,%22update%22:%22(ud)%22,%22count%22:%22(count)%22}&rt=" & Rnd
  15.         .Open "GET", Url, False
  16.         .send
  17.         js.addcode (.responsetext)
  18.     End With
  19.     '双数组操作,未测试读写速度
  20.     For i = 0 To js.eval("dy.data.length") - 1
  21.         ar = Split(js.eval("dy.data[" & i & "]"), ",")
  22.         For j = 0 To 10
  23.             arrdata(i + 1, j + 1) = ar(j)
  24.         Next j
  25.     Next
  26.     Cells.Clear: Cells(2, 1).Resize(i, j + 1) = arrdata
  27. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-1 11:39 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-1 11:48 | 显示全部楼层
非常感谢@suwenkai @onlycxb @VBA万岁
我是vba菜鸟,没弄懂,请帮忙解释下,尤其要问
Url = "http://183.136.160.18/EM_DataCenter/js.aspx?type=SR&sty=HYSR&mkt=0&stat=0&cmd=2&code=&sc=&ps=1&js=(pc),(x)&p=1&rt=" & Rnd
是怎么找出来的?我看到的网页链接是 “http://data.eastmoney.com/report/hyyb.html”

TA的精华主题

TA的得分主题

发表于 2015-3-1 12:27 | 显示全部楼层
jj2901 发表于 2015-3-1 11:48
非常感谢@suwenkai @onlycxb @VBA万岁
我是vba菜鸟,没弄懂,请帮忙解释下,尤其要问
Url = "http://183 ...

同求......

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-1 16:16 | 显示全部楼层
URL终于弄懂了,通过抓包软件fiddler抓包分析得出,如下:
http://183.136.160.18/EM_DataCenter/js.aspx?type=SR&sty=HYSR&mkt=0&stat=0&cmd=2&code=&sc=545&ps=50&p=6&js=var%20zNgAcnBk={"data":[(x)],"pages":"(pc)","update":"(ud)","count":"(count)"}&rt=47506539
但@suwenkai @onlycxb均改成如下形式,有很多“%22”参数,为何要这样,请高手赐教!
http://183.136.160.18/EM_DataCenter/js.aspx?type=SR&sty=HYSR&mkt=0&stat=0&cmd=2&code=&sc=&ps=10000&p=1&js=var%20suwenkai={%22data%22:[(x)],%22pages%22:%22(pc)%22,%22update%22:%22(ud)%22,%22count%22:%22(count)%22}&rt=47505758
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-26 19:26 , Processed in 0.037917 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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