读取IE源码的问题
本帖最后由 love5173 于 2011-4-13 17:24 编辑网址http://www.wowxunyou.com/#include <INet.au3>
$s_URL='http://www.wowxunyou.com/'
$soure = _INetGetSource($s_URL)
FileOpen("D:\UserFile\Desktop\222.txt",258)
FileWrite("D:\UserFile\Desktop\222.txt",$soure)
FileClose("D:\UserFile\Desktop\222.txt")读出来中文是乱码,另外我主要是提取他网页上那个各区物价的表,但是源码里看不到,希望大家指点一下
本帖最后由 afan 于 2011-4-13 18:24 编辑
后台创建个嵌入网页的gui,然后_IEDocReadHTML($oIE),再正则提取需要的东东~
本帖最后由 love5173 于 2011-4-13 18:32 编辑
#include <IE.au3>
$oIE=_IECreate('http://www.wowxunyou.com/')
$sHTML = _IEDocReadHTML ($oIE)
;MsgBox(0, "文本源代码", $sHTML)
FileOpen("D:\UserFile\Desktop\222.txt",2)
FileWrite("D:\UserFile\Desktop\222.txt",$sHTML)
FileClose("D:\UserFile\Desktop\222.txt")回复 2# afan
这样得到的源码跟静态的有所不同,但是仍然不能获取到我上面图里的内容 回复 2# afan
能否给出部分代码,让我获取到源码就可以了,正则提取部分我可以完成{:face (361):} 本帖最后由 netegg 于 2011-4-13 18:47 编辑
读是可以读出来,不过可能要转编码,而且看源码似乎是js的点击动作从另外的地方调过来的 回复 5# netegg
afan是怎么做到的,他不是获取到源码再提取到的上面那张图吗?
不过我没有创建GUI ,是不是这个原因才没取到信息的? 本帖最后由 netegg 于 2011-4-13 19:07 编辑
回复 6# love5173
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinHttp.au3>
Opt('MustDeclareVars', 1)
Global $iMemo
_mani()
Func _mani()
; 创建界面
GUICreate("HTTP Data", 800, 600)
; 创建memo控件
$iMemo = GUICtrlCreateEdit("", 2, 2, 796, 596, $WS_VSCROLL)
GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
GUISetState()
; 初始化并获取会话句柄
Global $hOpen = _WinHttpOpen()
If @error Then
MsgBox(48, "Error", "Error initializing the usage of WinHTTP functions.")
Exit 1
EndIf
; 获取连接句柄
Global $hConnect = _WinHttpConnect($hOpen, "wowxunyou.com")
If @error Then
MsgBox(48, "Error", "Error specifying the initial target server of an HTTP request.")
_WinHttpCloseHandle($hOpen)
Exit 2
EndIf
; 创建请求
Global $hRequest = _WinHttpOpenRequest($hConnect)
If @error Then
MsgBox(48, "Error", "Error creating an HTTP request handle.")
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
Exit 3
EndIf
; 发送请求
_WinHttpSendRequest($hRequest)
If @error Then
MsgBox(48, "Error", "Error sending specified request.")
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
Exit 4
EndIf
; 等待应答
_WinHttpReceiveResponse($hRequest)
; 检查是否有可用于读取的数据
Global $sChunk
If _WinHttpQueryDataAvailable($hRequest) Then
While 1
$sChunk = _WinHttpReadData($hRequest, 1) ; 读取数据
If @error Then ExitLoop
MemoWrite($sChunk)
Wend
; 将其保存到文件
Else
MsgBox(48, "Error occurred", "Site is experiencing problems.")
EndIf
; 关闭句柄
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc ;==>__WINHTTP_STATUS_CALLBACK
; 向memo控件写入信息
Func MemoWrite($sMessage = "")
GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc ;==>MemoWrite
我这的ie似乎用不上,只能这么用
知道了,没加参数 回复 7# netegg
悲剧了,我这没有WinHttp.au3
连你写的什么效果都不能看! 本帖最后由 netegg 于 2011-4-13 19:13 编辑
回复 8# love5173
不知道是不是你要的,这个是源码 回复 9# netegg
不知道是不是,反正在你这个图片上没有我需要的东西,但是afan那张图肯定是我需要的东西 本帖最后由 netegg 于 2011-4-13 19:17 编辑
回复 10# love5173
winhttp论坛里有,貌似新版的auto里也有,userinclude文件夹里找找 我想你的数据源没有找对,你要的东西在这里POST http://www.wowxunyou.com/ashx/show.ashx HTTP/1.1
Accept: text/javascript, text/html, application/xml, text/xml, */*
Accept-Language: zh-cn
x-prototype-version: 1.6.0.2
Referer: http://www.wowxunyou.com/
x-requested-with: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Host: www.wowxunyou.com
Content-Length: 29
Connection: Keep-Alive
Pragma: no-cache
Cookie: ASP.NET_SessionId=bc4div45fextke45szfc3e33; CheckCode=5735; cnzz_a1066091=0; sin1066091=; rtime=0; ltime=1302695323984; cnzz_eid=13651469-1302693542-
<NODE><Game>WOW</Game></NODE> 回复 12# bakefish
恕小妹眼拙,我连你这是什么代码都没看出来!
我知识比较匮乏,半路出家,请说详细点好吗? 回复 13# love5173
吃饭刚回来,等会给你 #include <IE.au3>
GUICreate('')
Local $oIE = _IECreateEmbedded()
Local $GUIActiveX = GUICtrlCreateObj($oIE, 0, 0)
$oIE.navigate('http://www.wowxunyou.com/')
ToolTip('正在获取数据,这个网站打开貌似有点慢,给你提示下,解解闷…')
_IELoadWait($oIE) ;这里的等待加载完毕并不准确,还需在下面循环判断需要的东东是否全部到手
Local $File = 'test.txt', $sHtm
While 1
$sHtm = _IEDocReadHTML($oIE)
If StringInStr($sHtm, '</A></TD></TR><') Then ExitLoop
Sleep(10)
WEnd
FileDelete($File)
FileWrite($File, $sHtm)
ShellExecute($File)
页:
[1]
2