VBS做网页采集(转载)

 

一、vbs 解析 html 文档

原文地址:http://www.cnblogs.com/52cik/p/vbs-parse-html.html

 

关于VBS采集,网上流行比较多的方法都是正则,其实 htmlfile 可以解析 html 代码,但如果 designMode 没开启的话,有时候会包安全提示信息。
但是开启 designMode (@预言家晚报 分享的方法) 的话,所有js都不会被执行,只是干干净净的dom文档,所以在逼不得已的情况下开启 designMode 一般情况保持默认即可。

Set html = CreateObject("htmlfile")
Set http = CreateObject("Msxml2.ServerXMLHTTP")
html.designMode = "on" ‘ 开启编辑模式
http.open "GET", "http://www.cnblogs.com/", False
http.send
strHtml = http.responseText
html.write strHtml ‘ 写入数据
Set post_list = html.getElementById("post_list")
For Each el In post_list.children     WScript.Echo el.getElementsByTagName("a")(0).innerText
Next

 

其实方法很简单,但是重点是会vbs的,却不一定都会 dom 操作,所以这个很纠结。

我也没办法,只能靠你们自己了,我只是分享一下思路而已、

这样解析 html 比正则方便快捷多了。

 

 

二、vbs 解析 json jsonp 方法

原文地址:http://www.cnblogs.com/52cik/p/vbs-parse-json.html

 

昨天说了下用 htmlfile 来解析 html,今天依然用他来解析,htmlfile 是一个 COM 版的 BOM 和 DOM,所以解析 html, 执行 js 完全不在话下,

今天就继续解析 json 和 jsonp 吧。

我收集了三种常见 json jsonp 的格式,因为很多人找我说如何用正则提取某个字符串,我看了下,要么是json,要么是jsonp,

正则简直浪费,比如那种空间里说说的数据,上百条的信息,你正则个P,而且还有回复里的格式也差不多的,所以最好的方法还是解析。

先来看看常见的三种吧:

酷我音乐用户信息 json 格式

http://kzone.kuwo.cn/mlog/UserVal?uid=1237357&from=profile

{"work":4,"fans":275,"lp":"{\"id\":1237357,\"username\":\"乱码\",\"pic\":\"http://img3.kuwo.cn/star/userhead/57/55/1315554310390_1237357m.jpg\"}","art":4,"album":1,"fortune":342402,"article":0,"workVideo":1,"care":195,"workAudio":3,"view":1312997,"playlist":0,"listen":278962,"collect":1}

拍拍手机查询接口 jsonp 格式

http://virtual.paipai.com/extinfo/GetMobileProductInfo?mobile=13012345678&amount=10000&callname=cb

cb({mobile:‘13012345678‘,province:‘重庆‘,isp:‘中国联通‘,stock:‘1‘,amount:‘10000‘,maxprice:‘0‘,minprice:‘0‘});

搜狐IP信息 js 格式

http://pv.sohu.com/cityjson

var returnCitySN = {"cip": "218.72.14.14", "cid": "330100", "cname": "浙江省杭州市"};

这几种合适都可以通过 htmlfile 来解析,但是方法稍微有点差异。

先来解析第一种 json 格式的吧。

Set html = CreateObject("htmlfile")
Set http = CreateObject("Msxml2.ServerXMLHTTP")
http.open "GET", "http://kzone.kuwo.cn/mlog/UserVal?uid=1237357&from=profile", False
http.send
strHtml = http.responseText ‘ 得到数据
Set window = html.parentWindow
window.execScript "var json = " & strHtml, "JScript" ‘ 解析 json
Set kuwo = window.json ‘ 获取解析后的对象
WScript.Echo "访问量:", kuwo.view, " 财富:", kuwo.fortune

可以得到如下信息。

再来看看 jsonp 的解析,jsonp其实只是多了一个回调函数而已,所以我们自定义一个函数解析他就可以了。

Set html = CreateObject("htmlfile")
Set http = CreateObject("Msxml2.ServerXMLHTTP")
callback = "cb"
url = "http://virtual.paipai.com/extinfo/GetMobileProductInfo?mobile=13012345678&amount=10000&callname=" & callback
http.open "GET", url, False
http.send
strHtml = http.responseText ‘ 得到数据
‘ cb({mobile:‘13012345678‘,province:‘重庆‘,isp:‘中国联通‘,stock:‘1‘,amount:‘10000‘,maxprice:‘0‘,minprice:‘0‘});
‘ <!--[if !IE]>|xGv00|8030d7c308afc4a32846a715ff79e9a3<![endif]-->
‘ 得到的是这样的数据,所以要处理下
strHtml = Split(strHtml, vbLf)(0) ‘ 取第一行
Set window = html.parentWindow
window.execScript "function " & callback & "(o){json=o}", "JScript" ‘ jsonp 回调函数、
window.execScript strHtml, "JScript" ‘ 解析 json
Set json = window.json ‘ 获取解析后的对象
WScript.Echo json.mobile, json.isp, json.province

 

可以得到如下信息。

最后看下 js 格式解析,这个是最简单的,什么都不用做,但是你要知道他的变量名。

Set html = CreateObject("htmlfile")
Set http = CreateObject("Msxml2.ServerXMLHTTP")
http.open "GET", "http://pv.sohu.com/cityjson", False
http.send
strHtml = http.responseText ‘ 得到数据
‘ 得到 var returnCitySN = {"cip": "218.72.14.14", "cid": "330100", "cname": "浙江省杭州市"};
Set window = html.parentWindow
window.execScript strHtml, "JScript" ‘ 解析 js
Set js = window.returnCitySN ‘ 获取解析后的对象
WScript.Echo js.cname, js.cip, js.cid

可以得到如下信息。

js 格式的是最简单的,但要注意,变量名是他定的,所以你在 获取解析后的对象 那一步,要写上他的变量名。

json 格式,我们只要给他加上变量名然后解析即可。

jsonp 相对麻烦点,因为要写一个自定义回调函数。

总的来说,方法差不多,只是解析部分稍微有点不同而已。

用 htmlfile 解析,是不是比 正则 方便?

以后玩 POST 别再用落伍的 instr+mid 或者 正则 去解析 html json了, htmlfile 才是王道。

时间: 2024-10-20 08:17:51

VBS做网页采集(转载)的相关文章

一大波可视化网页采集完整过程记录 新手也能一看就会

这几年工作中经常用到各种各样的网页爬虫,过年期间整理了一下,把一些比较实用的采集过程贴成动态GIF图片小视频,供以后自己使用.也希望方便到大家. 这里以八爪鱼为演示,没接触过可视化网页采集的话,不妨跟着动图动手做一做,理解起来更容易些. 下面都是些耗时在1~2分钟左右的演示,包括完整的规则配置过程.实时运行效果.和用代码实现爬虫相比,可视化的优点就是省时间,不是特别麻烦的情况,一般几分钟做出来很正常.下面开始: 先来做一个百度搜索结果的爪取规则:* 点击查看百度某关键词所有搜索结果爪取演示这个规

用CSS3做网页中的小三角,以及transition的用法

自开了博客园已经有2周了吧,虽然转载了一些觉得比较有用的文章之外还没有开始写自己的一些学习记录,那就从今天开始. 目前看了妙味的不少视频,有css+html,js的基础和中级也都看完了,作业也都做了,css3的部分也看过了,但是觉得讲得不太好,全部都是点到为止.无意中找到了传智播客的视频讲了一些css3的小技巧,今天就写一下用CSS3做网页中的小三角. 大致网上关于小三角的做法无非三种: 直接用背景图片,这个没什么好说的: 用块元素设置宽高都为0,三角的高用一条边框宽度,其他三条边框用dashe

分享一个近期写的简单版的网页采集器

分享一个近期写的简单版的网页采集器 功能特点: 1.可通过配置,保存采集规则. 2.可通过采集规则,进行数据采集. 3.可分页,分关键字,进行采集. 4.可保存数据至数据库,文本中. ........... 功能还比较简单,喜欢深入的可以继续深入下去,暂时还没有登录的功能,因为登录功能涉及到的范围比较广,待日后慢慢研究后再开发. 我先上个图让大家一睹为快吧: 首先看看页面,我们要采集这个网站的文章 接下来,首先是查找分页,获得分页里面的文章链接,接着查找内容页需要采集的字段,生成规则,进行采集.

网页采集利器 phpQuery

网页采集利器 phpQuery 2012-02-28 11:43:24|  分类: php|举报|字号 订阅 在网页采集的时候,通常都会用到正则表达式.但是有时候对于正则不太好的同学,比如我,那就杯具了..如今google的项目里有个phpQuery , 顾名思义query,完全类似于jquery的语法,但这是服务器端的,总体来说就是可以用php来直接采集对应的网页内容了,真的是太方便了,  它让一切变得可能...... phpQuery is a server-side, chainable,

用做网页开发经历了三个阶段(附长篇讨论) good

用做网页开发经历了三个阶段:第一阶:傻干阶段使用Intraweb,傻瓜型,无需知道javascript,html,css,会pascal就可以了. 第二阶:困惑阶段使用Intraweb,有很多限制,比如资料少,界面不容易做漂亮,没有源代码等等.于是转向研究其他开发工具.首先吸引眼球的是Nodejs,前后台用一种语言Javascript,爽,运行速度也不赖.随着PHP7的发布,注意力也被PHP7的高性能所吸引,玩了一阵PHP7.当然还有以前摸过的Tomcat/asp.net,各种框架一大堆.还有,

用python做网页抓取与解析入门笔记[zz]

(from http://chentingpc.me/article/?id=961) 事情的起因是,我做survey的时候搜到了这两本书:Computational Social Network Analysis和Computational Social Network,感觉都蛮不错的,想下载下来看看,但是点开网页发现这个只能分章节下载,晕,我可没时间一章一章下载,想起了迅雷的下载全部链接,试试看,果真可以把他们一网打尽,但是,sadly,迅雷下载的时候,文件名没办法跟章节名对应起来,晕,我可

使用Gephi做网页监控及PageRank排名计算

使用Gephi做网页监控及PageRank排名计算 1.下载httpGraph插件 2.新建一个httpGraph监控        3.配置浏览器,使用httpGraph做代理,使其可监控浏览器 4.观察监控结果 此时我们访问浏览器,Gephi会自动记录我们的访问痕迹 5.计算pagerank 6.查看结果 Gephi将我们的访问痕迹以及pagerank计算结果自动存储为数据资料

小白30分钟学会网页采集基础教程

首先,以某个多页(需要自动翻页)表格数据的采集为例,先演示一次网页采集的完整的过程: 点击从头播放完整动图 演示这里使用的是八爪鱼,依次点击表格某一行的每个字段,可以自动识别出其他所有数据行,并自动创建循环列表:点击翻页按钮,选择"循环点击下一页"动作,就能自动创建翻页循环. 网页信息爪取相关的工具有很多,有需要代码配合使用的,也有几乎不用代码的.其实实现网页采集所用的代码越少,效率越高,维护起来越简单.今天以八爪鱼为例,演示这个工具的一些基础知识: 1:基础操作1.1 新建任务 点击

防止网页被搜索引擎爬虫和网页采集器收录的方法汇总

来源:脚本之家 http://www.jb51.net/yunying/28470.html 下面的这些方法是可以标本兼治的:1.限制IP地址单位时间的访问次数 分析:没有哪个常人一秒钟内能访问相同网站5次,除非是程序访问,而有这种喜好的,就剩下搜索引擎爬虫和讨厌的采集器了. 弊端:一刀切,这同样会阻止搜索引擎对网站的收录 适用网站:不太依靠搜索引擎的网站 采集器会怎么做:减少单位时间的访问次数,减低采集效率 2.屏蔽ip 分析:通过后台计数器,记录来访者ip和访问频率,人为分析来访记录,屏蔽可