回复 1# kxing
#include <array.au3>
Global $date="2014-08-25" , $channel="cctv1" , $Cookie=""
$html=GetChannelHtml($date,$channel,2)
_ArrayDisplay($html)
#cs
说明 : $date 要获取的日期. 必须为有效日期格式 YYYY-MM-DD
$channel 要获取的频道名称. 必须为网站上已知的有效频道名称
$strmode 返回数据类型 为1 返回文本型 不为1 返回数组型 并处理网址为可直接打开的网址格式
#ce
Func GetChannelHtml($date,$channel,$strmode=1)
$getInfoUrl="http://tv.cntv.cn/index.php?action=epg-list&date="&$date&"&channel="&$channel&"&mode="
$WinHttp=ObjCreate("WinHttp.WinHttprequest.5.1")
$WinHttp.SetTimeouts(60000, 60000, 60000, 3000) ;设置操作超时时间
$WinHttp.Option(4) = 13056 ;忽略错误标志
$WinHttp.Option(6) = True ;为 True 时,当请求页面重定向跳转时自动跳转,False 不自动跳转,截取服务端返回的302状态。
$WinHttp.Open( "Get", $getInfoUrl, False) ;GET 或 POST, Url, False 同步方式;True 异步方式
$WinHttp.SetRequestHeader("Host", "tv.cntv.cn") ;主机
$WinHttp.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0")
$WinHttp.SetRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") ;接受数据类型
$WinHttp.SetRequestHeader("Accept-Language", "zh-CN") ;用户系统语言
$WinHttp.SetRequestHeader("Referer", "http://tv.cntv.cn/epg?channel=cctv1") ;来路
$WinHttp.SetRequestHeader("Connection", "Keep-Alive") ;Close = 不保持连接,Keep-Alive = 保持连接(持久连接)
$WinHttp.SetRequestHeader("X-Requested-With", "XMLHttpRequest")
$WinHttp.SetRequestHeader("Pragma","no-cache")
$WinHttp.Send()
ConsoleWrite("GetChannelHtml "&$WinHttp.Status&@TAB&$WinHttp.StatusText &@CRLF) ;当前 HTTP 状态
$HEADER=$WinHttp.GetAllResponseHeaders()
$WinHttp.WaitForResponse ;等待返回请求,XMLHTTP中也可以使用
$body = BinaryToString($WinHttp.ResponseBody,4)
$WinHttp=0
If $strmode=1 Then
Return $body
Else
$body=StringRegExp($body,'href="(.*)" class="p_name_a">(.*)</a>',3)
For $i=0 To UBound($body)-1 Step 2
$body[$i]="http://tv.cntv.cn"&$body[$i]
Next
Return $body
EndIf
EndFunc
|