VBA爬虫案例

Private Sub 批量获取()
Dim rowTotal!, res$, i!, t!, index!

Dim objXML, objSC, obj, strModel$, queryUrl$, detailUrl$, html, tr, td
Application.ScreenUpdating = False

queryUrl = “http://waybill/trackInfoByCode”
detailUrl = “http://waybill/doQueryReceiver”
strModel = “post”
‘Set objSC = CreateObject(“ScriptControl”): objSC.Language = “Javascript”
Set html = CreateObject(“htmlfile”): html.DesignMode = “on”
rowTotal = [A65536].End(3).Row
Select Case MsgBox(“慎用!有可能会被封ERP”, 68, “警告”)
Case 6
**登录****
Set objXML = CreateObject(“Msxml2.ServerXMLHTTP”)
With objXML
.Open “post”, “http://ssa.jd/login”, False
.setRequestHeader “User-Agent”, “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36”
.setRequestHeader “Content-Type”, “application/x-www-form-urlencoded”
D = Sheets(“登录”).Range(“B4”)
.send (D)
End With
If InStr(objXML.responsetext, “登录”) Then
Sheet2.Activate
MsgBox “登录失败!请检查用户、密码是否正确”
Exit Sub
End If

‘获取字段
For i = 2 To rowTotal
If Cells(i, 1) <> “” Then
t = Timer
Do While Timer – 0.1 < t ‘防止服务器堵塞
DoEvents
Loop

‘全程跟踪
res = getHTML(objXML, strModel, queryUrl, “orderCode=&code=” & Cells(i, 1)) ‘查询返回html文件
html.body.innerHTML = res
Set tr = html.getElementById(“grvList”).all.tags(“tr”)
Set td = tr(tr.Length – 1)
For index = 0 To td.Cells.Length – 1
Sheet1.Cells(i, index + 2) = td.Cells(index).innertext
Next index

‘运单详情,获取地址
‘ res = getHTML(objXML, strModel, detailUrl, “opeType=1&waybillCode=VX50932792330” & Cells(i, 1)) ‘查询返回json字符串
‘ objSC.addcode (“var obj =” & res)
‘进度条
prgramBarShow.Show 0
prgramBarShow.lblprogress.Width = prgramBarShow.lblBack.Width * i / rowTotal
prgramBarShow.percert.Caption = Format(Round(i / rowTotal * 100, 2), “0”) & “%”
prgramBarShow.Repaint

End If
Next i
End Select
Unload prgramBarShow
Set objXML = Nothing
Set objSC = Nothing
Set tr = Nothing
Set td = Nothing
Application.ScreenUpdating = True
End Sub
Function getHTML(objXML, strModel, strUrl, sdata)
With objXML
.Open strModel, strUrl, 0
.setRequestHeader “User-Agent”, “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36”
.setRequestHeader “Content-Type”, “application/x-www-form-urlencoded”
.setRequestHeader “Accept”, “/
.send (sdata)
End With
Do While objXML.Readystate <> 4
DoEvents
Loop
getHTML = objXML.responsetext
End Function
Private Sub 整理格式()
Sheets(“查询界面”).Range(“A2:B65536”).ClearContents
Sheets(“查询界面”).Range(“C2:F65536”).ClearContents

End Sub

Original: https://www.cnblogs.com/yiblue/p/16721329.html
Author: 一个不会玩的狗子
Title: VBA爬虫案例

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/621788/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • java算法-选择排序

    选择排序算法特点: 每一轮找出一个最小值或者最大值,依次放在最前面的位置。在查找的过程中,用当前假定的最小值或者最大值,去跟后面所有的值进行比较。如果小或者大,就把下标给那个假定的…

    Java 2023年5月29日
    086
  • docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot【图文完整版】

    一、前言 redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群。redis有两种高可用的方案: High availabilit…

    Java 2023年6月15日
    072
  • spring事务,TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

    转载自(https://blog.csdn.net/weixin_30699831/article/details/96672476) 在aop配置事务控制或注解式控制事务中,tr…

    Java 2023年5月30日
    093
  • 反射和注解

    1.1 类加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载,类的连接,类的初始化这三个步骤来对类进行初始化。如果不出意外情况,JVM将会连续完成这三个步…

    Java 2023年6月6日
    090
  • SoapUI5.0创建WebService接口模拟服务端(转)

    转载自:https://blog.csdn.net/a19881029/article/details/26348627 使用SoapUI创建WebService接口模拟服务端需要…

    Java 2023年5月30日
    0103
  • shiro的过滤器

    shiro的过滤器 shiro与web进行集成的时候,主要通过过滤器来进行实现,下面是shiro的过滤器的继承体系 AbstractFilter:shiro中filter的顶级抽线…

    Java 2023年6月7日
    099
  • ZXing二维码解析&精度提高一瞥

    报表中含有单号二维码,纸质单据经扫描仪扫描为图片后,使用 com.google.zxing解析二维码生成单号供程序使用。在实际使用过程中发现二维码解析时而有失败的情况,对扫描的单据…

    Java 2023年6月5日
    080
  • loj#2312. 「HAOI2017」八纵八横(线性基 线段树分治)

    题意 题目链接 Sol 线性基+线段树分治板子题。。 调起来有点自闭。。 #include #define fi first #define se second #define p…

    Java 2023年5月30日
    080
  • module ‘sklearn.metrics’ has no attribute ‘calinski_harabaz_score’

    metrics.calinski_harabaz_score(X, y_pred) 改为 metrics.calinski_harabasz_score(X, y_pred) Or…

    Java 2023年6月16日
    070
  • Android连载39-简析HAL、拨号盘

    一、简析HAL结构 HAL是一个位于操作系统和驱动程序之上,运行在用户空间中的服务程序。 目的:对上层应用提供一个统一的查询硬件设备的接口。 好处:简化了应用程序查询硬件的逻辑 注…

    Java 2023年6月13日
    079
  • 2022-9-2 cookie 和 session

    当客户端关闭后,服务器不关闭,两次获取session是否为同一个?默认情况下。不是。 如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cooki…

    Java 2023年6月13日
    064
  • Spring Ioc源码分析系列–前言

    Spring Ioc源码分析系列–前言 为什么要写这个系列文章 首先这是我个人很久之前的一个计划,拖了很久没有实施,现在算是填坑了。其次,作为一个Java开发者,Spr…

    Java 2023年6月8日
    085
  • java日常开发必备:list的四种遍历

    在平时的开发过程中使用List的场景很多,你知道List的遍历有多少种方式?今天一起来梳理下List的几种遍历方式。这里以java.util.ArrayList为例来演示。 这里有…

    Java 2023年6月9日
    090
  • IDEA如何导入jar包?

    IDEA 如何导入jar包 01 准备步骤 通过Apache官网或者maven下载需要的jar包 02 具体步骤 step1: 在src目录下,创建一个package,取名为lib…

    Java 2023年6月5日
    095
  • MVC三层架构

    MVC三层架构 什么是MVC:model view controller 模型、视图、控制器 大致框架: Model 业务处理:业务逻辑(service) 数据持久层:CRUD(D…

    Java 2023年6月13日
    071
  • Volatile的学习

    首先先介绍三个性质 可见性 可见性代表主内存中变量更新,线程中可以及时获得最新的值。 下面例子证明了线程中可见性的问题 由于发现多次执行都要到主内存中取变量,所以会将变量缓存到线程…

    Java 2023年6月16日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球