ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] 不懂html也来学网抓(xmlhttp/winhttp+fiddler)

    [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-2-11 09:35 | 显示全部楼层
本帖已被收录到知识树中,索引项:网页交互
VBA万岁 发表于 2015-2-9 16:04
不知老师有没有带验证码的登录成功实例或教学帖?

代码识别验证码并登录:
参见蓝天大师的帖子

手工识别验证码并登录:
http://club.excelhome.net/thread-1183493-1-1.html

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-2-17 10:35 | 显示全部楼层
oliverpep 发表于 2015-2-15 13:47
吴老师,对不起,我没有表达清楚意思,我是想怎么样能得到如你贴子中的
"http://club.excelhome.net/for ...

先上传一个测试文档:

test.rar

104 Bytes, 下载次数: 48

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-2-17 10:48 | 显示全部楼层
本帖最后由 wcymiss 于 2015-2-17 10:49 编辑
oliverpep 发表于 2015-2-15 16:38
吴老师,我意思是如何从fiddler中分析出下载地址并自动生成,能不能给个思路或者实例,因为下载地址没办法 ...


获取上贴的文件的下载地址的过程如下:

1、登录excelhome
2、打开fiddler
3、输入网址:http:/ /club.excelhome.net/forum.php?mod=viewthread&tid=1159783&page=71,抓包
4、抓包完毕后,在fiddler里搜索字符串:“先上传一个测试文档”
5、如下图,可以看到下载文档的地址在responsetext里。
获取下载文档的链接.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-5 16:27 | 显示全部楼层
这个问题我遇到过1次,你这里是第二次。

除了用api去解压缩gzip数据,我还没想出其他什么办法。

但你的系统没法运行那些api?。。。。

如果只是你自己操作,你可以打开fiddler,在代码里对winhttp对象里设置代理(.setProxy 2, "127.0.0.1:8888"),这样,代码运行时fiddler会帮你解压缩gzip数据。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-5 16:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
amour0861 发表于 2015-3-5 13:32
认真看了wcymiss 大神强大的帖子,感觉很系统很全面。以前抓取过不少网站,也都没啥问题,没想到最近卡在wi ...

或许,你可以参考msdn,修改下相应的api

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-6 09:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 wcymiss 于 2015-3-9 17:07 编辑
amour0861 发表于 2015-3-5 16:55
API试过,除了gzip.dll(我找遍了,win7 64位的没法用),还有别的库里有gzip的解压接口么?


以下代码在 64位win7旗舰版、32位office2010里运行通过:
(gzip.dll如果不解压至windows\system32\文件夹,在api的声明中写明路径即可,如:Declare Function InitDecompression Lib "d:\gzip.dll" () As Long)

Gzip测试.rar (26.66 KB, 下载次数: 281)

=============2015-03-09更新======================
上面附件有错误。详见726楼。

点评

错的,不要从百度抄!  发表于 2015-3-8 00:11

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-9 17:06 | 显示全部楼层
本帖最后由 wcymiss 于 2015-3-9 17:18 编辑
liucqa 发表于 2015-3-8 00:10
你这个代码是错的,建议看一下gzip的文件格式定义,然后再自己改一下代码。

不要从百度抄,全是错的。 ...

嗯,确实有错,而且错得离谱,不知道第一个写这段代码是根据什么写的。
错误1:压缩前数据长度获取错误。(应为压缩数据的最后四个字节)
错误2:DestroyDecompression的参数传递方式错误。(应为按值传递)

gzip.dll虽然是微软提供,但我没搜到官方对其内部函数的说明,只能在msdn上找到几个相近的函数声明作为参考。

另外,winrar软件可以解压gzip文件。所以也可以利用winrar解压gzip数据。不过这个会涉及到读写磁盘。

测试代码如下(包括上述两种方法):
Gzip测试.rar (16.87 KB, 下载次数: 301)

gzip.dll请从722楼下载。下载后解压到D盘根目录,然后再运行本楼的测试代码。

以上代码在下述环境运行通过:
1、winXP+office2010
2、64bit win 7+ 32bit office2010

参考:
GZIP文件格式:RFC 1952 GZIP file format specification version 4.3
类似函数声明:Decompress
类似函数声明:Compress Function

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-10 09:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
liucqa 发表于 2015-3-9 22:54
VOID WINAPI DestroyCompression(   IN PVOID  context);     
...指针吧
Pointer to any type.

虽然那个声明是指针类型(byref),但实测是按值传递的(byval)。所以我之前也只是说“类似的声明”。

用byref的话,在winxp下,Debug.Print 显示一个大于0的数值(某个错误号),在64bitwin7下,系统直接崩溃。
用byval,Debug.Print显示0,表明成功(S_OK)。
另外,微软的api中,销毁句柄类的声明,大多都是byval类型的。

那个源码是gzip官方网站的gzip的内部源码,与微软的gzip.dll没多大关系。(微软的gzip.dll存在于IIS的安装文件里)
gzip官网和zlib官网都有很多dll和exe,vb都可以用它们来压缩和解压gzip数据。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-5-2 09:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
VBA万岁 发表于 2015-5-2 08:17
我这里测试第一段代码不成功——无法获取Skey值,立即窗口中也未见到skey字样。
第二段代码测试成功。

IE法是需要IE加载一个控件的。
先登录软件QQ,然后用IE打开腾讯微博网页,然后登录腾讯微博,IE应该会让你加载一个登录控件。你试试。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-5-14 11:43 | 显示全部楼层
ktr 发表于 2015-5-14 11:01
请问老师.当我创建了htmlfile 对象.把 ResponseText 写入 htmlfile 之后.我想取某一id 的控件的值.
为什 ...

getElementByID(htmlid)的结果是一个对象。需要“set ....=.... "
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-3-29 18:43 , Processed in 0.327386 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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