找回密码
 加入
搜索
查看: 17634|回复: 26

[网络通信] 读取IE源码的问题

 火.. [复制链接]
发表于 2011-4-13 17:15:57 | 显示全部楼层 |阅读模式
本帖最后由 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")
读出来中文是乱码,另外我主要是提取他网页上那个各区物价的表,但是源码里看不到,希望大家指点一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-4-13 18:10:10 | 显示全部楼层
本帖最后由 afan 于 2011-4-13 18:24 编辑

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 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
这样得到的源码跟静态的有所不同,但是仍然不能获取到我上面图里的内容
 楼主| 发表于 2011-4-13 18:36:43 | 显示全部楼层
回复 2# afan
能否给出部分代码,让我获取到源码就可以了,正则提取部分我可以完成
发表于 2011-4-13 18:42:39 | 显示全部楼层
本帖最后由 netegg 于 2011-4-13 18:47 编辑

读是可以读出来,不过可能要转编码,而且看源码似乎是js的点击动作从另外的地方调过来的
 楼主| 发表于 2011-4-13 18:46:30 | 显示全部楼层
回复 5# netegg
afan是怎么做到的,他不是获取到源码再提取到的上面那张图吗?
不过我没有创建GUI ,是不是这个原因才没取到信息的?
发表于 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似乎用不上,只能这么用
知道了,没加参数
 楼主| 发表于 2011-4-13 18:54:52 | 显示全部楼层
回复 7# netegg
悲剧了,我这没有WinHttp.au3
连你写的什么效果都不能看!
发表于 2011-4-13 19:09:25 | 显示全部楼层
本帖最后由 netegg 于 2011-4-13 19:13 编辑

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2011-4-13 19:15:31 | 显示全部楼层
回复 9# netegg
不知道是不是,反正在你这个图片上没有我需要的东西,但是afan那张图肯定是我需要的东西
发表于 2011-4-13 19:16:20 | 显示全部楼层
本帖最后由 netegg 于 2011-4-13 19:17 编辑

回复 10# love5173
winhttp论坛里有,貌似新版的auto里也有,userinclude文件夹里找找
发表于 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>
 楼主| 发表于 2011-4-13 20:31:06 | 显示全部楼层
回复 12# bakefish
恕小妹眼拙,我连你这是什么代码都没看出来!
我知识比较匮乏,半路出家,请说详细点好吗?
发表于 2011-4-13 20:45:53 | 显示全部楼层
回复 13# love5173


    吃饭刚回来,等会给你
发表于 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金钱 +40 收起 理由
love5173 + 40 太强了,今天学到两处重要的地方,谢谢

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-17 18:22 , Processed in 0.090921 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表