#include <Constants.au3>
$file = FileOpen("zi.txt", 0)
If $file = -1 Then
MsgBox(0, "错误", "在脚本目录下建立zi.txt的文本文件在写几个汉字")
Exit
EndIf
$xh = 1
$p = 0
While 1
Select
Case $p = 0
$chars = FileRead($file, 2)
If @error = -1 Then ExitLoop
$oIE = _IECreate("http://www.uname.cn/html/dic/4/63_9084.shtml")
$a = _IEGetObjByName($oIE, "Query")
_IEFormElementSetValue($a, $chars);账号
$oSubmit = _IEGetObjByName($oIE, "Query")
WinWaitActive("在线字典")
_IEAction($oSubmit, "focus")
Send("{enter}")
_IEQuit($oIE)
WinWait("", "完毕")
If Not WinActive("", "完毕") Then WinActivate("", "完毕")
Sleep(2000)
WinWaitActive("", "完毕")
Sleep(1000)
$ckp = WinExists("http://www.uname.cn/searchcenter.asp - Microsoft Internet Explorer", "完毕")
Select
Case $ckp = 0
WinWait("在线字典", "完毕")
If Not WinActive("在线字典", "完毕") Then WinActivate("在线字典", "完毕")
Sleep(2000)
WinWaitActive("在线字典", "完毕")
$var = ControlGetText("在线字典", "", "Edit1")
WinClose("在线字典", "完毕")
ProcessClose("IEXPLORE.EXE")
$oIE2 = _XmlHttp($var)
$sR = StringRegExp($oIE2, '#FFFFFF">(.*?)( )?</td>', 3)
If @error = 0 Then
IniWrite("a2.ini", "Section3", $chars, $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR)
EndIf
$xh = $xh + 1
TrayTip("状态." & $p & ".已经完成了第" & $xh & "个字上一个是" & $chars, $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR, 10)
Case $ckp = 1
ProcessClose("IEXPLORE.EXE")
$p = 1
Case Else
MsgBox(0, "", "所有条件都不成立!")
EndSelect
Case $p = 1
TrayTip("状态." & $p & ".已经完成了第" & $xh & "个字上一个是" & $chars, $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR, 10)
Sleep(100000)
$p = 0
Case Else
MsgBox(0, "", "所有条件都不成立!")
EndSelect
WEnd
Func _XmlHttp($Url) ;Sanhen
Local $oHTTP, $sReturn
$oHTTP = ObjCreate("microsoft.xmlhttp")
$oHTTP.Open("get", $Url, False)
$oHTTP.Send()
$sReturn = BinaryToString($oHTTP.responseBody)
Return $sReturn
EndFunc ;==>_XmlHttp 哎呀 今天起来一看还是会被卡住啊~ 现在正在看在那里被卡主。 现在关键是如何获取这个字的地址。我打算把这个分两步进行。 17# ac5474012
是不是刷新受限了?那样的话可试试更改IP或使用代理是否有效 19# afan
应该不是,不过我打算换一种获取的方法
http://www.uname.cn/dic/zidian.asp在这里输入新文字,这样网页不会打开一个新网页。但是你知道当网页跳转后如何控制它吗?
跳转后
终于全部解决了,跳过过度刷新限制!但是还有个问题! 在别的计算机上会报这个错误。还要解决这个啊~ 怎么弄得
全部代码#include <IE.au3>
#include <Constants.au3>
#include <Date.au3>
$file = FileOpen("zi.txt", 0)
If $file = -1 Then
MsgBox(0, "错误", "在脚本目录下建立zi.txt的文本文件在写几个汉字")
Exit
EndIf
$sl = 0
While 1
$chars = FileRead($file, 2)
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN&" 步骤1", "")
$oIE = _IECreate("http://www.uname.cn/dic/zidian.asp", 0, 0)
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN&" 步骤2", "")
$a = _IEGetObjByName($oIE, "gb")
_IEFormElementSetValue($a, $chars)
$oSubmit = _IEGetObjByName($oIE, "gb")
$b = _IEGetObjByName($oIE, "Submit")
_IEAction($b, "click")
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN&" 步骤3", "")
_IELoadWait($oIE)
$oLinks = _IELinkGetCollection($oIE)
$i = 0
For $oLink In $oLinks
$i = $i + 1
If $i = 75 Then
$s = $oLink.href
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN&" 步骤4", $s)
EndIf
Next
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN&" 步骤5", $s)
$oIE2 = _XmlHttp($s)
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN&" 步骤6", $s)
$sR = StringRegExp($oIE2, '#FFFFFF">(.*?)( )?</td>', 3)
If @error = 0 Then
IniWrite("e1.ini", "Section3", @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & "-" & @SEC & "_" & $chars, $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR)
ElseIf @error <> 0 Then
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN&" 步骤7", $chars & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR)
EndIf
$sl = $sl + 1
ToolTip($sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR, 50, 50, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & "-" & @SEC & @CR & "已经完成了第" & $sl & "个字上一个是" & $chars, 0, 4)
_IEQuit($oIE)
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN&" 步骤8", "关闭")
WEnd
Func _XmlHttp($Url) ;Sanhen
Local $oHTTP, $sReturn
$oHTTP = ObjCreate("microsoft.xmlhttp")
$oHTTP.Open("get", $Url, False)
$oHTTP.Send()
$sReturn = BinaryToString($oHTTP.responseBody)
Return $sReturn
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN&" 步骤9", "会不会使这里的问题?")
EndFunc ;==>_XmlHttp 或者报 请求动作失败(请求于对象) 本帖最后由 ac5474012 于 2009-10-2 16:59 编辑
第一次可以,但循环到第二次就卡在这句话$oIE = _IECreate("http://www.uname.cn/dic/zidian.asp", 0, 0)报上面的错误为什么呢? 真奇怪我的计算机就没问题呢? #include <IE.au3>
#include <Constants.au3>
#include <Date.au3>
$file = FileOpen("zi.txt", 0)
If $file = -1 Then
MsgBox(0, "错误", "在脚本目录下建立zi.txt的文本文件在写几个汉字")
Exit
EndIf
$sl = 0
While 1
Assign("oIE", "0", 2)
$chars = FileRead($file, 2)
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & " 步骤1", "")
$oIE = _IECreate("http://www.uname.cn/dic/zidian.asp", 0, 0)
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & " 步骤2", "")
$a = _IEGetObjByName($oIE, "gb")
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & " 步骤2.1", "")
_IEFormElementSetValue($a, $chars)
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & " 步骤2.2", "")
$oSubmit = _IEGetObjByName($oIE, "gb")
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & " 步骤2.3", "")
$b = _IEGetObjByName($oIE, "Submit")
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & " 步骤2.4", "")
_IEAction($b, "click")
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & " 步骤3", "")
_IELoadWait($oIE)
$sHTML = _IEBodyReadHTML($oIE)
$Link = StringRegExp($sHTML, 'href="(/html/dic/[^"]+)">', 3)
If @error = 0 Then
$s = 'http://www.uname.cn' & $Link
Else
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & " 步骤5-这将是个错误回馈,而且也会因此停止程序的运行", $s)
EndIf
$oIE2 = _XmlHttp($s)
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & " 步骤6", $s)
$sR = StringRegExp($oIE2, '#FFFFFF">(.*?)( )?</td>', 3)
If @error = 0 Then
IniWrite("e1.ini", "Section3", @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & "-" & @SEC & "_" & $chars, $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR)
ElseIf @error <> 0 Then
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & " 步骤7", $chars & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR)
EndIf
$sl = $sl + 1
ToolTip($sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR & "," & $sR, 50, 50, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & "-" & @SEC & @CR & "已经完成了第" & $sl & "个字上一个是" & $chars, 0, 4)
_IEQuit($oIE)
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & " 步骤8", "关闭")
WEnd
Func _XmlHttp($Url) ;Sanhen
Local $oHTTP, $sReturn
$oHTTP = ObjCreate("microsoft.xmlhttp")
$oHTTP.Open("get", $Url, False)
$oHTTP.Send()
$sReturn = BinaryToString($oHTTP.responseBody)
Return $sReturn
IniWrite("e1cw.ini", $chars, @YEAR & "-" & @MON & "-" & @MDAY & "-" & @HOUR & "-" & @MIN & " 步骤9", "会不会使这里的问题?")
EndFunc ;==>_XmlHttp出现这个问题
E:\au3\autoit3.3.0.0.1\Include\IE.au3 (2709) : ==> ??????(?????).:
If IsObj($o_object.document.GetElementsByName($s_Id).item($i_index)) Then
If IsObj($o_object.document^ ERROR $o_object.visible = $f_visible
$o_object.visible = $f_visible^ ERROR
line - 1:
Error:请求动作失败(请求于对象) 每次都停在$a = _IEGetObjByName($oIE, "gb") 而且报ie.au3的错误,这怎么解决呢?
If IsObj($o_object.document.GetElementsByName($s_Id).item($i_index)) Then
If IsObj($o_object.document^ ERROR 我有次试了一下,这个和我的速度有关系?
如果这样第二次就报错误了#include <IE.au3>
$file = FileOpen("zi.txt", 0)
If $file = -1 Then
MsgBox(0, "错误", "在脚本目录下建立zi.txt的文本文件在写几个汉字")
Exit
EndIf
$sl = 0
While 1
$chars = FileRead($file, 2)
$oIE = _IECreate("http://www.uname.cn/dic/zidian.asp", 0, 0)
$a = _IEGetObjByName($oIE, "gb")
_IEFormElementSetValue($a, $chars)
$oSubmit = _IEGetObjByName($oIE, "gb")
$b = _IEGetObjByName($oIE, "Submit")
_IEAction($b, "click")
_IELoadWait($oIE)
$sHTML = _IEBodyReadHTML($oIE)
$Link = StringRegExp($sHTML, 'href="(/html/dic/[^"]+)">', 3)
If @error = 0 Then
$s = 'http://www.uname.cn' & $Link
Else
MsgBox(0,"","错误")
EndIf
IniWrite("e1.ini", "Section3",$chars, $s)
$sl = $sl + 1
ToolTip("网址: " & $s, 50, 50, "已经完成了第" & $sl & "个字上一个是" & $chars, 0, 4)
_IEQuit($oIE)
WEnd但是如果这样的话就能长久25次多吧,但是如何才能稳定呢?#include <IE.au3>
$file = FileOpen("zi.txt", 0)
If $file = -1 Then
MsgBox(0, "错误", "在脚本目录下建立zi.txt的文本文件在写几个汉字")
Exit
EndIf
$sl = 0
While 1
$chars = FileRead($file, 2)
Sleep(1000)
$oIE = _IECreate("http://www.uname.cn/dic/zidian.asp", 0, 0)
Sleep(1000)
$a = _IEGetObjByName($oIE, "gb")
Sleep(1000)
_IEFormElementSetValue($a, $chars)
Sleep(1000)
$oSubmit = _IEGetObjByName($oIE, "gb")
Sleep(1000)
$b = _IEGetObjByName($oIE, "Submit")
Sleep(1000)
_IEAction($b, "click")
Sleep(1000)
_IELoadWait($oIE)
$sHTML = _IEBodyReadHTML($oIE)
$Link = StringRegExp($sHTML, 'href="(/html/dic/[^"]+)">', 3)
If @error = 0 Then
$s = 'http://www.uname.cn' & $Link
Else
MsgBox(0,"","错误")
EndIf
IniWrite("e1.ini", "Section3",$chars, $s)
$sl = $sl + 1
ToolTip("网址: " & $s, 50, 50, "已经完成了第" & $sl & "个字上一个是" & $chars, 0, 4)
_IEQuit($oIE)
WEnd
页:
1
[2]