ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA网抓过程中调用js返回值

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-5-30 13:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
coby001 发表于 2015-5-30 13:42
?erectDate=2015-05-30&nothing=2015-05-30&pjname=0&page=2

在这个查询所返回的内容中有以下东东:

//画分页代码以及自动调整窗口大小
        var m_nRecordCount = 88;
        var m_nPageSize = 20;

-------------------
你应该看得懂吧, 88 / 20 = 5页

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-5-30 15:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
coby001 发表于 2015-5-30 13:42
?erectDate=2015-05-30&nothing=2015-05-30&pjname=0&page=2

我想利用js取总数页。

TA的精华主题

TA的得分主题

发表于 2015-5-30 17:53 | 显示全部楼层
onlycxb 发表于 2015-5-30 15:05
我想利用js取总数页。

看9楼
。。。。。。。。。。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-5-30 22:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
coby001 发表于 2015-5-30 17:53
看9楼
。。。。。。。。。。。。

自己结贴
  1. Sub 抓取总数页()

  2.     Dim StrJS As String, StrJun As String
  3.     With CreateObject("msxml2.xmlhttp")

  4.         '读取js文件,并替换document取值
  5.         .Open "GET", "http://srh.bankofchina.com/search/js/wcm_page_2013.js", False
  6.         .Send
  7.         StrJS = Replace(.responsetext, "document.getElementById(PageContext.PageNav.NavId)", "'list_navigator'")

  8.         '取网页中相关jscript代码
  9.         .Open "POST", "http://srh.bankofchina.com/search/whpj/search.jsp", False
  10.         .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  11.         .Send "erectDate=2015-05-01&nothing=2015-05-30&pjname=0&page=2"

  12.         StrJun = .responsetext
  13.         StrJun = Mid(StrJun, InStr(StrJun, "function executeSearch()"))
  14.         StrJun = Left(StrJun, InStr(StrJun, "function gotoPage(npage)") - 1)
  15.     End With
  16.     '将相关代码加入js中,运行相关function,取总页码
  17.     MsgBox "共计" & JSEval(StrJS & ";" & StrJun & ";init_list();PageContext.params['PageCount']") & "页"
  18. End Sub
  19. Function JSEval(StrJS As String)
  20.     Dim jss As Object
  21.     Set jss = CreateObject("MSScriptControl.ScriptControl")
  22.     With jss
  23.         .Language = "javascript"
  24.         JSEval = .Eval(StrJS)
  25.        ' Stop
  26.     End With
  27. End Function
  28. Sub CopyToClipbox(strText As String)
  29.     With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
  30.         .SetText strText
  31.         .PutInClipboard
  32.     End With
  33. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-5-30 22:57 | 显示全部楼层
上述取得总页码方法主要是利用js的原有文件取得,过程比较繁琐,但作为学习还是有价值研究,定有收获!
如果利用向上取整函数实现,则极为简单!

TA的精华主题

TA的得分主题

发表于 2015-5-31 10:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

唉~~
你学了那么久网页爬虫了,还是没学通啊~
完全没领会 9楼 帖子的内容。

.Send "erectDate=2015-05-01&nothing=2015-05-30&pjname=0&page=2"
连这种自己调节的参数也照搬,page 在第一次查询的时候写1就好了。

我在9楼直接给了计算总页数的方法,就不用绕弯弯去折腾 js 了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-5-31 14:44 | 显示全部楼层
领会 9楼 帖子的内容。我只不过换一种方法来偿试一下。

TA的精华主题

TA的得分主题

发表于 2015-6-1 16:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

虽然可以用向上取整法求得总页数,但还是希望通过折腾 js 直接获得该值。
遂Mark如附件,有时间再慢慢研读。
调用js返回值获取中国银行外汇牌价总页数.zip (589.13 KB, 下载次数: 51)

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-6-1 17:23 | 显示全部楼层
VBA万岁 发表于 2015-6-1 16:19
虽然可以用向上取整法求得总页数,但还是希望通过折腾 js 直接获得该值。
遂Mark如附件,有时间再慢慢研 ...

你收获了什么?

TA的精华主题

TA的得分主题

发表于 2015-6-1 17:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
onlycxb 发表于 2015-6-1 17:23
你收获了什么?

暂时还没有。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-14 06:31 , Processed in 0.039538 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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