love5173 发表于 2011-4-13 17:15:57

读取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:10:10

本帖最后由 afan 于 2011-4-13 18:24 编辑

后台创建个嵌入网页的gui,然后_IEDocReadHTML($oIE),再正则提取需要的东东~

love5173 发表于 2011-4-13 18:30:43

本帖最后由 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
这样得到的源码跟静态的有所不同,但是仍然不能获取到我上面图里的内容

love5173 发表于 2011-4-13 18:36:43

回复 2# afan
能否给出部分代码,让我获取到源码就可以了,正则提取部分我可以完成{:face (361):}

netegg 发表于 2011-4-13 18:42:39

本帖最后由 netegg 于 2011-4-13 18:47 编辑

读是可以读出来,不过可能要转编码,而且看源码似乎是js的点击动作从另外的地方调过来的

love5173 发表于 2011-4-13 18:46:30

回复 5# netegg
afan是怎么做到的,他不是获取到源码再提取到的上面那张图吗?
不过我没有创建GUI ,是不是这个原因才没取到信息的?

netegg 发表于 2011-4-13 18:48:27

本帖最后由 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似乎用不上,只能这么用
知道了,没加参数

love5173 发表于 2011-4-13 18:54:52

回复 7# netegg
悲剧了,我这没有WinHttp.au3
连你写的什么效果都不能看!

netegg 发表于 2011-4-13 19:09:25

本帖最后由 netegg 于 2011-4-13 19:13 编辑

回复 8# love5173
不知道是不是你要的,这个是源码

love5173 发表于 2011-4-13 19:15:31

回复 9# netegg
不知道是不是,反正在你这个图片上没有我需要的东西,但是afan那张图肯定是我需要的东西

netegg 发表于 2011-4-13 19:16:20

本帖最后由 netegg 于 2011-4-13 19:17 编辑

回复 10# love5173
winhttp论坛里有,貌似新版的auto里也有,userinclude文件夹里找找

bakefish 发表于 2011-4-13 19:55:03

我想你的数据源没有找对,你要的东西在这里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>

love5173 发表于 2011-4-13 20:31:06

回复 12# bakefish
恕小妹眼拙,我连你这是什么代码都没看出来!
我知识比较匮乏,半路出家,请说详细点好吗?

afan 发表于 2011-4-13 20:45:53

回复 13# love5173


    吃饭刚回来,等会给你

afan 发表于 2011-4-13 20:57:00

#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
查看完整版本: 读取IE源码的问题