VBA登录抓取网络数据

受限在网页上右击查看网页源代码,按Ctrl+F搜索form表单,找到post的网址(或者自身就是post的网址),然后找到账号和密码的name,用来做VBA里Send的Data,这样登录完就可以直接post数据获取网址获取网页数据了,这里举例代码最后是返回文本,可以用left和right配合instr、invinstr、len等反复截取文本,或者直接用正则表达式。

Set http = CreateObject("Msxml2.ServerXMLHTTP") http.Open "post", "登录网址", False http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" Data = "username=账号&password=密码" http.send (Data)

http.Open "post", "数据获取网址", False http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" Data = "参数名=参数值" http.send (Data) html = http.responsetext

If InStr(HTML, "由于访问订单详情页过于频繁") > 0 Then '绕过验证码 http.Open "post", "http://om.jd.com/verify_doOrderInfoverify", False http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" Data = "codes=&returnUrl=http://om.jd.com/detail" http.send (Data) HTML = http.responsetext '未测试是否返回原网页 End If

文本处理的子函数举例

Function sf(a, b, c, d) '文本存在判断返回 If InStr(a, b) <> 0 Then sf = c Else sf = d End If End Function

Function smid(a, b, c) '截取首次出现文本中间 If InStr(a, b) > 0 Then smid = Right(a, Len(a) - InStr(a, b) - Len(b) + 1) If InStr(smid, c) > 0 Then smid = Left(smid, InStr(smid, c) - 1) End If End If End Function

Function sp(a, b, c) 'HTML关键字截取 sp = smid(a, b, c) If InStr(sp, "</a") Then sp = smid(sp, "<a", "/a") Else sp = smid(sp, "<td", "/td>") End If sp = smid(sp, ">", "<") sp = Replace(sp, Chr(10), "") sp = Replace(sp, Chr(11), "") sp = Replace(sp, Chr(13), "") sp = Replace(sp, " ", "") End Function

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨龙飞前端

scrollto 到指定位置

2494
来自专栏java 成神之路

使用 NIO 实现 echo 服务器

4617
来自专栏张善友的专栏

Silverlight + Model-View-ViewModel (MVVM)

     早在2005年,John Gossman写了一篇关于Model-View-ViewModel模式的博文,这种模式被他所在的微软的项目组用来创建Expr...

2968
来自专栏C#

DotNet加密方式解析--非对称加密

    新年新气象,也希望新年可以挣大钱。不管今年年底会不会跟去年一样,满怀抱负却又壮志未酬。(不过没事,我已为各位卜上一卦,卦象显示各位都能挣钱...)...

4878
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2707
来自专栏Golang语言社区

【Golang语言社区】GO1.9 map并发安全测试

var m sync.Map //全局 func maintest() { // 第一个 YongHuomap := make(map[st...

4708
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2060
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7
来自专栏一个会写诗的程序员的博客

Spring Reactor 项目核心库Reactor Core

Non-Blocking Reactive Streams Foundation for the JVM both implementing a Reactiv...

2152
来自专栏张善友的专栏

LINQ via C# 系列文章

LINQ via C# Recently I am giving a series of talk on LINQ. the name “LINQ via C...

2645

扫码关注云+社区