麦哲伦的船有多大:AutoIt3采集网页中JS生成的数据 - JavaScript - web - JavaEye论坛
来源:百度文库 编辑:偶看新闻 时间:2024/09/29 08:55:26
AutoIt3采集网页中JS生成的数据
在做了一年多的网页数据采集之后,中途停了几个月,今天经理交代一个任务,采集http://www.365rili.com/huangliQuery.html 中2011年全年的农历日期,例如 2011年1月1日 是“农历11月廿七 庚寅年 戊子月丙辰日”。开始以为可以直接使用自编的webpageAPI来采集,但分析源代码之后发现,里面的数据全部是有JS动态生成的,对于目前的网页解析类库是很难获取到该网页的数据,就算使用htmlutilAPI,启动js引擎,模拟鼠标事件,这样也很难采集到该网页的数据。
因为按键精灵软件中有个网页分析的工具“网页按键精灵”可以分析网页加载后的源码,和 Autoit3能够操作IE浏览器,所以也能很好的采集到JS生成的数据。一下是我采集该网页JS数据的准备和源码。
准备是:window系统,ie浏览器,网页按键精灵,autoit3 有这四个部分就可以通过编写类vb代码,在autoit上运行。就能在控制台打印出采集到的“农历日期”信息。
源代码:
;采集2011全年的农历日 如:1月1日 是 农历11月廿七 庚寅年 戊子月 丙辰日
#include
;创建一个IE浏览器,并且打开指定地址,试着附着在已存在窗口,浏览器窗口可见,在返回之前等待网页加载完毕,使窗口聚焦
$oIE = _IECreate ("http://www.365rili.com/huangliQuery.html",1,1,1,0)
;通过标签名获取当前网页所有INPUT和DIV 的DOC标签对象
$oButtons = _IETagNameGetCollection ($oIE, "input")
$oInputs = _IETagNameGetCollection ($oIE, "div")
;通过ID获取网页DOM对象
$oMonSelect=_IEGetObjById($oIE, "oth_month")
$oDaySelect=_IEGetObjById($oIE, "oth_day")
For $mon=1 to 12
;获取11年每个月份的天数
if $mon<=7 Then
if mod($mon,2)=1 Then
$day=31
Else
if $mon=2 Then
$day=28
Else
$day=30
EndIf
EndIf
else
if mod($mon,2)=0 Then
$day=31
Else
$day=30
EndIf
EndIf
;通过指定option的文字来设定当前月份
_IEFormElementOptionSelect ($oMonSelect, $mon & "", 1, "byText")
For $today=1 to $day
;打印日期
;ConsoleWrite($mon & "-" & $today & @CRLF)
;通过指定option的文字来设定当前日期
_IEFormElementOptionSelect ($oDaySelect, $today & "", 1, "byText")
;###########################
;获取网页中指定序号的input的按钮
;###########################
;$oButtons = _IETagNameGetCollection ($oIE, "input")
$j=0;
For $oButton In $oButtons
If $j=0 Then
_IEAction ($oButton, "click")
EndIf
$j=$j+1
Next
;###########################
;获取网页中指定需要的div标签内的text
;###########################
;$oInputs = _IETagNameGetCollection ($oIE, "div")
$i=0;
For $oInput In $oInputs
If $i=27 Then
ConsoleWrite($mon & "-" & $today &" "&_IEPropertyGet($oInput, "innertext") & @CR)
EndIf
$i=$i+1
Next
Sleep(500);休息0.5秒
Next
Next
;一下是运行时控制台打印的部分结果
1-1 农历11月廿七 庚寅年 戊子月 丙辰日
1-2 农历11月廿八 庚寅年 戊子月 丁巳日
1-3 农历11月廿九 庚寅年 戊子月 戊午日
1-4 农历12月初一 庚寅年 戊子月 己未日
1-5 农历12月初二 庚寅年 己丑月 庚申日
注:
(1)源代码只能在window平台上运行,并且必须安装ie浏览器。
(2)网页按键精灵是按键精灵的一个子软件,这里用于分析加载后的网页,如定位 没有设定id 和 name 属性的标签,只要点击 网页按键精灵 上的网页分析和按下F9就可以开始分析网页,能很好知道每个标签在该网页中的序号。
(3)autoit3程序能发不成exe文件,在window平台运行。
(4)autoit3和按键精灵都是一类软件,只是各有偏重,autoit偏重办公的自动化,按键精灵偏重游戏方面自动化。
(5)autoit3的功能很强大,我只是专注其数据采集方面的应用。
网页制作中JS的问题
数据上报自动生成的一个JS文件,用什么能打开它????
请教JS生成的问题
如何将含有JS调用的网页自动生成为具体内容的html页
vb 中怎么把LISTVIEW中 的数据生成报表
数据采集卡的应用
asp中生成的cookies用js调用显示成urlencode问题
怎么将asp文件调用的内容动态生成到.js 文件中去?
premiere在采集和生成过程中老是报错
求教," 16位高分辨率多功能数据采集卡 1716L 16位高分辨率多功能数据采集卡"中16位是指的什么意思?
web网页中查询数据的问题
2003系统网页中Js代码
js怎么在网页制作中使用
我的网页中yudi.js病毒了,请教高手怎样清除网页中的病毒
网页VB或许JS脚本中有没有网页每各几秒自动刷新的代码
关于CCD的数据采集如何实现
数据采集程序的设计方法
基于ARM的数据采集系统设计??
基于ARM的数据采集系统设计??
数据采集器的概念是什么?
TI公司的TLC0831采集负数据
模拟电网数据采集系统的概述
linux下的数据采集驱动
PCI数据采集卡的作用