没有合适的资源?快使用搜索试试~ 我知道了~
首页不懂html也来学VBA网抓(xmlhttpwinhttp+fiddler).pdf
vba 网抓常用方法: 1、xmlhttp/winhttp 法: 用xmlhttp/winhttp 模拟向服务器发送请求,接收服务器返回的数据。 优点:效率高,基本无兼容性问题。 缺点:需要借助如fiddler 的工具来模拟http 请求。 2、IE/webbrowser 法: 创建IE 控件或webbrowser 控件,结合htmlfile 对象的方法和属性,模拟浏览器操作,获取浏览器 页面的数据。 优点:这个方法可以模拟大部分的浏览器操作。所见即所得,浏览器能看到的数据就能用代码获取。 缺点:各种弹窗相当烦人,兼容性也确实是个很伤脑筋的问题。上传文件在IE 里根本无法实现
资源详情
资源评论
资源推荐

本帖主要针对的是不懂 html 的网抓新手,所以,本帖基本不谈原理,只说实战
学网抓对 vba 的要求:
1、了解对象及对象属性方法的基本概念;
2、熟练使用循环、判断及 vba 数组;
3、掌握一种以上提取文本的方法,可以在各种有规律的文本里提取所需数据;
4
、会调试代码,会用立即窗口、本地窗口。(很重要,请务必学会)
5、有录制宏的经验。
可以这样说,只要你具备上述 vba 知识,再对网抓有点兴趣,有点耐心,那你就能学会网抓。
我本人开始用 xmlhttp 和 fiddler 的时候,对 html 和 javascript 是一窍不通的,对 get、post 也不懂,全是依样画葫芦。画成功后,有了兴趣,才慢慢去寻
找它的原理和相关知识去学习。我想我这样的学习方法或许可以给一些像我一样的小白一个借鉴。但愿没有误导新人才好。
学习 html 强力推荐此网站:http://www.w3school.com.cn/ ,绝对权威
==================================================
如果发觉楼主有写错的地方,或是用错术语,或是概念模糊,或是运行出错、运行效果与
楼主不同,或是有看不懂、不理解的地方,请大家及时提出来。
希望在大家的帮助和建议下完善本帖,让不会网抓的朋友由此贴学会写一些基础的网抓代

码,同时感受到网抓的乐趣。
谢谢大家!

处理 table
table
数据处理,除了之前的两种通用方法外,还有以下几种方法:
1
、html 法
将 table 数据写入 htmldocument 对象,然后循环取出表格的各个元素。
优点:可以利用 htmldocument 对象整理表格。
缺点:需要学习 html 相关知识。
以 17 楼作业二为例:
1. Sub Main()
2. Dim strText As String
3. Dim arrData(1 To 1000, 1 To 3)
4. Dim i As Long, j As Long
5. Dim TR As Object, TD As Object
6.
7. With CreateObject("MSXML2.XMLHTTP")
8. .Open "POST", "http://www.pinble.com/Template/WebService1.asmx/Present3DList", False
9. .setRequestHeader "Content-Type", "application/json"

10. .Send "{pageindex:'1',lottory:'TC7XCData_jiangS',pl3:'',name:'江苏七星彩',isgp: '0'}"
11. strText = Split(JSEval(.responsetext), "<script")(0) '本例的 script 运行会提示错误,所以去除这部分 script 代码
12. End With
13.
14. With CreateObject("htmlfile")
15. .write strText
16. i = 0
17. For Each TR In .all.tags("table")(2).Rows
18. i = i + 1
19. j = 0
20. For Each TD In TR.Cells
21. j = j + 1
22. arrData(i, j) = TD.innerText
23. Next
24. Next
25. End With
26.
27. Set TR = Nothing
28. Set TD = Nothing
29. Cells.Clear
30. Range("C:C").NumberFormat = "@" '设置文本格式以显示数字前面的 0
31. Range("a1").Resize(i, 3).Value = arrData
32. End Sub
33.
34. Function JSEval(s As String) As String
35. With CreateObject("MSScriptControl.ScriptControl")

36. .Language = "javascript"
37. JSEval = .Eval(s)
38. End With
39. End Function
复制代码
2、QueryTable 法:
这个是 excel 自带的网抓利器。个人觉得它最大的优势就是处理 table 很方便。
优点:处理 table 方便,代码简短。
缺点:会产生定义名称。多页循环时每页都会产生行字段名称,需要后续处理删除。
仍以作业一的第 1 题为例:
1. Sub Main()
2. Cells.Delete
3. With ActiveSheet.QueryTables.Add("url;http://data.bank.hexun.com/lccp/jrxp.aspx", Range("a1"))
4. .WebFormatting = xlWebFormattingNone '不包含格式
5. .WebSelectionType = xlSpecifiedTables '指定 table 模式
6. .WebTables = "2" '第 2 张 table
7. .Refresh False
8. End With
9. End Sub
复制代码
代码相当简短。
剩余302页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0