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的得分主题

发表于 2014-11-8 20:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:网页交互
wcymiss 发表于 2014-10-22 11:10
还是Cookie。。。

模拟Cookie的宗旨是向服务器发送一个它认可的Cookie。不管这个Cookie是回话Cookie还是 ...

吴老师,在EH中查自己的帖子,我试了不用模拟cookie就能抓到
Sub Main()
     Dim strText As String
     With CreateObject("MSXML2.XMLHTTP")
         .Open "GET", "http://club.excelhome.net/forum.php", False
         .Send
         strText = .responsetext
         Debug.Print strText
     End With
End Sub
另外,在header里面想要拷贝某个cookie值,挺费劲的,在cookie栏里能直接复制,但这里有点让人眼花

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-8 21:17 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 wcymiss 于 2014-11-8 21:23 编辑
renahu 发表于 2014-11-8 20:21
吴老师,在EH中查自己的帖子,我试了不用模拟cookie就能抓到
Sub Main()
     Dim strText As String
你是在IE登录论坛后运行的代码吧?

xmlhttp是可以调用IE的缓存和cookie的。

你试试清除IE缓存和cookie,重启excel后运行这段代码,看还有没有之前的效果。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-8 21:21 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 wcymiss 于 2014-11-8 21:29 编辑

手机每次发完贴,总出现下面这样的结果:

Screenshot_2014-11-08-21-24-46-1.png

很容易让人以为发帖未成功而造成重复发帖。

TA的精华主题

TA的得分主题

发表于 2014-11-8 22:27 | 显示全部楼层
wcymiss 发表于 2014-11-8 21:21
手机每次发完贴,总出现下面这样的结果:

前两天我问您,有关验证码的问题,今天我发现只要输入正确的用户名,密码,验证码,成功登陆了,就可以抓包了,是这样吗?今晚登陆后,把想要的数据都抓出来了。

TA的精华主题

TA的得分主题

发表于 2014-11-8 23:01 | 显示全部楼层
感谢吴姐的网抓教程,新手学习中!!

TA的精华主题

TA的得分主题

发表于 2014-11-9 14:56 | 显示全部楼层
問一下關於以下的兩個程序
這個是其他師兄做的
  1. Sub cc()
  2.     Cells.ClearContents
  3.     Set oDoc = CreateObject("htmlfile")
  4.     With CreateObject("WinHttp.WinHttpRequest.5.1")
  5.         .Open "GET", "http://www.cde.org.cn/transparent.do?method=spxlList&tasktype=xb&nowYearM=2014-02&acceptid=&applyTypeCde=IND&isTimetag=0&currentPageNumber=1&pageMaxNumber=340&totalPageCount=17&pageroffset=20&pageMaxNum=20&pagenum=1", False
  6.         .send
  7.         .WaitForResponse
  8.         oDoc.body.innerHTML = .responsetext
  9.         Set r = oDoc.All.Tags("table")(7).Rows
  10.         For i = 0 To r.Length - 1
  11.             For j = 0 To r(i).Cells.Length - 1
  12.                 Cells(i + 1, j + 1) = r(i).Cells(j).innerText
  13.             Next j
  14.         Next i
  15.         Set r = Nothing
  16.     End With
  17. End Sub
复制代码
這個是我做的,沒有資料整合,只做到拿資料那步
  1. Sub Main()
  2.     With CreateObject("WinHttp.WinHttpRequest.5.1") '
  3.         .Open "GET", "http://www.cde.org.cn/news.do?method=changePage&pageName=service&frameStr=4", False
  4.         .send
  5.         .Open "GET", "http://www.cde.org.cn/transparent.do?method=spxlList&tasktype=xb&isFirst=1", False
  6.         .send
  7.         total_no = Split(Split(.responseText, "<font color=""#FF0000"" style=""font-weight: bolder;"">")(1), "</font>")(0)
  8.         .Open "POST", "http://www.cde.org.cn/transparent.do?method=spxlList", False
  9.         .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  10.         .send "tasktype=xb&nowYearM=2014-11&acceptid=&applyTypeCde=IND&isTimetag=0&currentPageNumber=1&pageMaxNumber=" & total_no & "&totalPageCount=19&pageroffset=0&pageMaxNum=20&pagenum=1"
  11.         CopyToClipbox .responseText
  12.     End With
  13. End Sub
复制代码
我想問問,師兄那個程序是直接在 GET 那兒便拿了完整資料了,那條網址基本上用IE法也可以很方便拿資料出來,可是照這課程來說,應該是在 .SEND 那才會發的,請問這是否一個經驗的問題呢? 又或者是會有什麼的提示可以在抓之前大約知道呢?

TA的精华主题

TA的得分主题

发表于 2014-11-9 20:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
吴姐,能不能说说xmlHttp法下载百度文库和在线播放视频?

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-9 21:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
blanksoul12 发表于 2014-11-9 14:56
問一下關於以下的兩個程序
這個是其他師兄做的這個是我做的,沒有資料整合,只做到拿資料那步我想問問,師兄那 ...

是的,有些网页支持把POST里的SendData放在URL后面用&连接作为参数传递,同时请求方式改为"GET"。比如你这个网页,还有我帖子里登录163邮箱的例子。

具体原因我不清楚,今天百度了很久也没找到说法。

TA的精华主题

TA的得分主题

发表于 2014-11-10 08:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
wcymiss 发表于 2014-10-21 12:51
更多Fiddler的使用方法,敬请参考《Fiddler调试权威指南》一书。
电子书下载地址:http://pan.baidu.com/s ...

一直使用的是Fidder,偶尔用IE。谢谢吴姐分享,学习了!

TA的精华主题

TA的得分主题

发表于 2014-11-10 10:21 | 显示全部楼层
谢谢老师,是不是有密码,验证码的,一般先手工登陆,再去抓,就比较容易。那些非手工登陆直接就抓,其实也就省了登陆这一步 。省不了多少事,但难度却增加不少,是这么个意思吧?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-18 13:52 , Processed in 0.046370 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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