ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2014-11-27 10:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:网页交互
renahu 发表于 2014-11-27 09:14
谢谢吴老师指点,可能是我上一个图书网比较简单吧,那里代码登和浏览器登录是同步的,是否登陆上比较直观 ...

谢谢,搞定了,这方法真好!

TA的精华主题

TA的得分主题

发表于 2014-11-27 11:27 | 显示全部楼层
wcymiss 发表于 2014-10-24 12:07
提取数据-下载文件
知道下载文件的真实地址,就能很方便的用xmlhttp或winhttp下载文件。

吴老师,图书网中的验证码图片名称是:ctl00$ContentPlaceHolder1$img2
但搜了一下,session中也没有,按照120楼的操作,我也找不到图片文件的图标,怎么下载呢?我如何用winhttp发送获取图片的请求呢?

点评

就是你insert的那个URL  发表于 2014-11-27 11:44
.Open "GET",URL .Send  发表于 2014-11-27 11:43

TA的精华主题

TA的得分主题

发表于 2014-11-27 11:27 | 显示全部楼层
wcymiss 发表于 2014-10-24 12:07
提取数据-下载文件
知道下载文件的真实地址,就能很方便的用xmlhttp或winhttp下载文件。

吴老师,图书网中的验证码图片名称是:ctl00$ContentPlaceHolder1$img2
但搜了一下,session中也没有,按照120楼的操作,我也找不到图片文件的图标,怎么下载呢?我如何用winhttp发送获取图片的请求呢?

TA的精华主题

TA的得分主题

发表于 2014-11-27 12:15 | 显示全部楼层
本帖最后由 renahu 于 2014-11-27 12:54 编辑
renahu 发表于 2014-11-27 11:27
吴老师,图书网中的验证码图片名称是:ctl00$ContentPlaceHolder1$img2
但搜了一下,session中也没有,按 ...


吴老师,执行到:.SaveToFile strFileName, 2   
为什么提示: 错误3004 ,写入文件失败?  
我指定文件存在 C盘:Const strFileName As String = "C:\VerifyCode.jpg"

啊~ 终于搞定啦!不知道为什么改在 d盘就OK了,cooki都出来了

TA的精华主题

TA的得分主题

发表于 2014-11-27 13:08 | 显示全部楼层
pfysw 发表于 2014-11-26 20:51
虽然看不懂,但是我觉得问题的关键不是抓包吧,是怎么处理单选框的问题,就是.send后面到底怎么对单选框进 ...

不一定要点击,但一定要发送消息的吧,你20楼里有 .Send "type=2&CompanyID=" & encodeURI("11|澳门") & "&leagueID=36&teamID=0&kind=1&port=&odds1=&do0=" & encodeURI("确定")
这一句代码对下拉框发送消息,然后数据才能收到吧,只是我不知道怎么发送单选框的消息

点评

你一定没有仔细看帖吧。  发表于 2014-11-27 16:09
fiddler抓包后就看到了。  发表于 2014-11-27 16:08

TA的精华主题

TA的得分主题

发表于 2014-11-27 15:46 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-11-27 18:45 | 显示全部楼层
wcymiss 发表于 2014-10-21 16:10
获取数据-直接获取-转码:

在15楼的例子中:

吴老师,这个函数 encodeURIComponent,在11楼里没有吧,我怎么找不到呢?

TA的精华主题

TA的得分主题

发表于 2014-11-27 19:15 | 显示全部楼层
wcymiss 发表于 2014-10-21 11:33
个人偏爱fiddler的原因:(唠叨话,可略过)

1、fiddler不需要寄生在浏览器中,且可抓到多个浏览器的包。 ...

吴老师,我开始琢磨抓这个图书网,我发现选择”书籍导航“也就是不分类的,记录数: 6936。这个在session中,有两个动态参数,ifrmid  和 xml,我查这个两个参数,在一个session中看到ifrm.id=GenerateRUID(),这应该是个和系统时间有关的函数;encodeURIComponent(b.xml),这个是加密了的,b.xml不知道是什么?我现在有点茫然,不知再怎么查这两个动态参数

点评

那个ifrmid不用也可以的,和随机数效果一样。xml你把它解码看看,里面有一些参数的。。呃,,网抓就是个体力活。。  发表于 2014-11-28 14:27

TA的精华主题

TA的得分主题

发表于 2014-11-28 09:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
作业一:
  1. Option Explicit

  2. Sub 今日理财产品()
  3.     Dim xhml1 As New XMLHTTP
  4.     Dim str As String
  5.     Dim reg As New RegExp
  6.     Dim ar, i, m, n
  7.     Dim arr
  8.     Dim htm1 As String
  9.     Dim col, dat1, page
  10.     Sheet2.Cells(5, 1).Resize(65533, 10).ClearContents
  11.     'col = Sheet2.Range("b1")
  12.     dat1 = Sheet2.Range("b2")
  13.     page = Sheet2.Range("b3")

  14.     On Error Resume Next
  15.     For m = 1 To page
  16.         htm1 = "http://data.bank.hexun.com/lccp/Jrxp.aspx?col=1"
  17.         htm1 = htm1 & "&tag=desc&date="
  18.         htm1 = htm1 & dat1 & "&page="
  19.         htm1 = htm1 & m
  20.         xhml1.Open "GET", htm1, False
  21.         xhml1.send
  22.         str = xhml1.responseText
  23.         Debug.Print str
  24.         With reg
  25.             '.Pattern = ""
  26.             .Pattern = "value='(.*?)'.*?\[(.*?)].*?'>(.*?)<.*?'>(.*?)<.*?'>(.*?)<.*?'>(.*?)<.*?'>(.*?)<.*?'>(.*?)<.*?'>(.*?)</td><td >(.*?)<"
  27.             .MultiLine = True
  28.             .Global = True
  29.             Set ar = .Execute(str)
  30.             ReDim arr(0 To ar.Count, 10)
  31.             For i = 0 To ar.Count - 1
  32.                 arr(i, 0) = ar.Item(i).SubMatches(0)
  33.                 arr(i, 1) = ar.Item(i).SubMatches(1)
  34.                 arr(i, 2) = ar.Item(i).SubMatches(2)
  35.                 arr(i, 3) = ar.Item(i).SubMatches(3)
  36.                 arr(i, 4) = ar.Item(i).SubMatches(4)
  37.                 arr(i, 5) = ar.Item(i).SubMatches(5)
  38.                 arr(i, 6) = ar.Item(i).SubMatches(6)
  39.                 arr(i, 7) = ar.Item(i).SubMatches(7)
  40.                 arr(i, 8) = ar.Item(i).SubMatches(8)
  41.                 arr(i, 9) = ar.Item(i).SubMatches(9)
  42.             Next
  43.             n = Sheet2.Range("a65533").End(xlUp).Row
  44.             Sheet2.Cells(n + 1, 1).Resize(ar.Count - 1, 10) = arr

  45.         End With
  46.     Next
  47. End Sub
复制代码


点评

正则~~,赞一个。。可是,后面的0123456789为什么不循环?  发表于 2014-11-28 14:25

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-11-28 15:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
renahu 发表于 2014-11-27 19:15
吴老师,我开始琢磨抓这个图书网,我发现选择”书籍导航“也就是不分类的,记录数: 6936。这个在session ...

吴老师,ifrmid好像也不是随机数吧,他应该是:年月日时分秒帧+好像跟页数有关的数(比如第一页总是25),所以我还是想生成这个数
您帮我看看这个附件,是这样提取函数和计算吗?还缺什么呢?
图书1.rar (52.17 KB, 下载次数: 8)

点评

不需要生成ifrmid也能提取图书的分类。也不需要登录。你就把那个SendData复制了post一下就可以了。  发表于 2014-11-28 15:18
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-24 22:17 , Processed in 0.043988 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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