`
沙漠绿树
  • 浏览: 429547 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

AutoIt3采集网页中JS生成的数据

阅读更多

    在做了一年多的网页数据采集之后,中途停了几个月,今天经理交代一个任务,采集http://www.365rili.com/huangliQuery.html 中2011年全年的农历日期,例如 2011年1月1日 是“农历11月廿七  庚寅年 戊子月 丙辰日”。开始以为可以直接使用自编的webpage API来采集,但分析源代码之后发现,里面的数据全部是有JS动态生成的,对于目前的网页解析类库是很难获取到该网页的数据,就算使用htmlutil API,启动js引擎,模拟鼠标事件,这样也很难采集到该网页的数据。

     因为按键精灵软件中有个网页分析的工具“网页按键精灵”可以分析网页加载后的源码,和 Autoit3能够操作IE浏览器,所以也能很好的采集到JS生成的数据。一下是我采集该网页JS数据的准备和源码。

     准备是:window系统,ie浏览器,网页按键精灵,autoit3 有这四个部分就可以通过编写类vb代码,在autoit上运行。就能在控制台打印出采集到的“农历日期”信息。
     源代码:


;采集2011全年的农历日 如:1月1日  是 农历11月廿七  庚寅年 戊子月 丙辰日

#include <IE.au3> 

;创建一个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的功能很强大,我只是专注其数据采集方面的应用。
分享到:
评论

相关推荐

    AUTOIT(Au3)配合JQuery(Js)自动化网页操作

    AUTOIT(Au3)配合JQuery(Js)自动化网页操作

    autoIt3 中文手册 (2015.09)

    AutoIt3是一款强大的自动化脚本语言,主要用于Windows操作系统下的任务自动化。这个“AutoIt3 中文手册(2015.09)”是专为AutoIt3编程者准备的一份详细参考资料,提供了全面的API函数、语法和教程,帮助用户理解和...

    scite4autoit3 AutoIT

    AutoIT V3,scite4AutoIT3,只有这个版本的AutoIT才可以添加版本信息、版权信息、还有程序图标等,只AutoIT3,即可加了以下代码,也是没有办法编译带有exe版本,版权,公司等信息的,这个版本还有一些额外的工具,获取...

    Chrome_autoit操作chrome_autoit3chrome_autoit_autoitchrome_chrome_源

    5. 执行JavaScript:AutoIt能够注入JavaScript代码到网页中,从而执行更复杂的网页操作,如触发事件、修改DOM元素等。 6. 处理多标签页:可以切换、创建、关闭Chrome的标签页,实现多页面管理。 7. 自动化登录和...

    AutoIt3 多线程支持库

    在这个特定案例中,DLL使得AutoIt3脚本能够创建并管理多个线程,从而实现并发执行不同的任务,提高程序的效率和响应速度。 `MT AutoIt.def` 文件是一个定义文件,用于声明DLL的导出函数。这些函数是AutoIt3脚本与...

    AutoIt v3 软件自动安装生成器

    AutoIt v3 是一个编写自动程序的工具,完全免费。 先安装该工具。 用任何文本编辑工具(如记事本)编写脚本(即Script),注意后缀改为.au3 然后用鼠标右键点击该脚本,选Compiled(即编译),即可在同目录下生成...

    autoit3 信息管理例子

    在AutoIt3中,你可以使用内置的函数和模块来实现数据管理。例如,`FileOpen()`, `FileRead()`, 和 `FileWrite()` 函数可用于读取和写入文本文件;`FileOpenDialog()` 可以让用户选择文件;`Array()` 可以创建和操作...

    autoit3操作chrom谷歌浏览器

    在实际应用中,你可能需要结合`WebDriverFunc.au3`中的函数,根据`WebDriver函数说明.doc`的指导,编写自己的AutoIt脚本来实现特定的需求,如登录网站、填写表单、点击特定按钮等。 需要注意的是,虽然AutoIt理论上...

    AutoIt V3中文帮助文档

    AutoIt v3 是用以编写并生成具有 BASIC 语言风格的脚本程序的免费软件,它被设计用来在Windows GUI(用户界面)中进行自动操作。通过它可以组合使用模拟键击、鼠标移动和窗口/控件操作等来实现自动化任务,而这是...

    CoProc_MultiThread_autoit3_autoit_多线程_au3多线程_au3_

    在标题和描述中提到的“CoProc_MultiThread_autoit3_autoit_多线程_au3多线程_au3_”主题,重点是使用 AutoIt 3 来实现多线程功能。在AutoIt中,多线程是非常有用的,它允许脚本同时执行多个任务,提高程序的效率和...

    autoit3入门指南

    在使用AutoIt3的过程中,开发者可能会遇到各种问题,包括但不限于版本兼容性、语法错误、运行时异常等。针对这些问题,《AutoIt3入门指南》提供了详细的解答和建议,帮助用户快速定位并解决问题。例如,关于AutoItv...

    autoit3 学习文档

    autoit3 帮助文档 中文 autoit3入门与提高

    AutoIt v3中文帮助文档

    AutoIt v3 是用以编写并生成具有 BASIC 语言风格的脚本程序的免费软件,它被设计用来在Windows GUI(用户界面)中进行自动操作。通过它可以组合使用模拟键击、鼠标移动和窗口/控件操作等来实现自动化任务,而这是...

    autoIt3教程、au3教程

    AutoIt3是一款强大的自动化脚本语言,主要用于Windows操作系统中的任务自动化。它以其简单易学的语法和丰富的功能,被广大用户用于编写各种自动化脚本,包括系统管理、软件测试、数据处理等多个领域。 AutoIt3的...

    autoit3学习资料

    "autoit3函数用法.doc"很可能是对AutoIt3中的各种内置函数的详细解释。在AutoIt3中,函数是完成特定任务的预定义代码块,用户可以通过调用这些函数来执行诸如文件操作、窗口控制、字符串处理等多种任务。这个文档...

    AutoIt3中文帮助文件

    AutoIt3中文帮助文件 2010-4-10更新

    autoit3中文说明书

    AutoIt v3 是用以编写并生成具有 BASIC 语言风格的脚本程序的免费软件, 它被设计用来在Windows GUI(用户界面)中进行自动操作。

    AutoIt v3 中文帮助文档

    AutoIt v3 是用以编写并生成具有 BASIC 语言风格的脚本程序的免费软件,它被设计用来在Windows GUI(用户界面)中进行自动操作。通过它可以组合使用模拟键击、鼠标移动和窗口/控件操作等来实现自动化任务,而这是...

    SciTE4AutoIt3安装包

    AutoIt开发编程平台SciTE4AutoIt3,包含GUI开发工具

Global site tag (gtag.js) - Google Analytics