找回密码
 加入
搜索
查看: 7254|回复: 15

[系统综合] 求助,网页上的内容内容查找怎么把匹配的全部列出来

  [复制链接]
发表于 2010-8-9 22:35:04 | 显示全部楼层 |阅读模式
本帖最后由 link369 于 2010-8-9 22:42 编辑

$array = StringRegExp($HTMLContents, $kaishi&'[^\<]+'&$jieshu, 2, $nOffset)
这里标志位可以写为4为全局,但是这里改为4以后就没办法打开提取到的地址进行播放地址的提取。
我要实现的就是输入电影名称然后在优酷里面搜索的相关内容,然后全部把搜索出来的地址都列出来
#include <GuiEdit.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3> 
#Include <GuiListBox.au3>
#Include <GuiImageList.au3>

$AForm1 = GUICreate("youku查找", 644, 432, 206, 119)
$Label1 = GUICtrlCreateLabel("电影名称:", 36, 30, 55, 17)
$Input1 = GUICtrlCreateInput("", 100, 25, 191, 21)
$Edit2 = GUICtrlCreateEdit("", 20, 60, 602, 360,$ES_AUTOVSCROLL)
GUICtrlSetColor(-1, 0x008000)
GUICtrlSetData(-1, "")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button2 = GUICtrlCreateButton("开    始", 530, 10, 91, 41, 0)
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
While 1
$nMsg1 = GUIGetMsg()
Select
    Case $nMsg1 = $GUI_EVENT_CLOSE
     ExitLoop
    Case $nMsg1 = $Button2
       $dy_name = GUICtrlRead($Input1) 
     if $dy_name = '' or $dy_name = '请输入电影名称' then 
                MsgBox (0,'提示:',"请先输入电影名称!!!")
       else

     GUICtrlSetData($Edit2, '')
            caiji($dy_name)
    EndIf
            
                EndSelect

WEnd

func caiji($dy_name)
$nOffset = 1
$kaishi = '<li class="vTitle"><a href="' ;开始地址
$jieshu = '" charset="'                   ;结束地址
$url = ''                    ;分析到的连接
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET","http://www.soku.com/search_video/q_"&$dy_name)
$oHTTP.Send()
$HTMLContents = $oHTTP.Responsetext
if $HTMLContents <> "" then 
        $array = StringRegExp($HTMLContents, $kaishi&'[^\<]+'&$jieshu, 2, $nOffset)
        If @error = 0 Then
                        $nOffset = @extended
                EndIf
                
        for $i = 0 to UBound($array) - 1
            $url=$array[$i]
                Next
                        $url=StringReplace($url,$kaishi,"")
                        $url=StringReplace($url,$jieshu,"")
                        
                if $url ="" then 
                        GUICtrlSetData($Edit2, "电影名称错误或者目标站没有该电影!!!"&@CRLF, 1)
                else
                                                GUICtrlSetData($Edit2, "页面地址:"&$url&@CRLF, 1)
                        caiji_sj($url,$dy_name)
                EndIf
Else
        GUICtrlSetData($Edit2, "连接目标失败,请检查网络连接!!!"&@CRLF, 1) 
EndIf
EndFunc


Func caiji_sj($url,$dy_name)
$nOffset = 1
$kaishi = ' <input type="text" id="link2" value="' ;开始地址
$jieshu = '" />'                   ;结束地址
$aa = ''                    ;分析到的连接
$ooHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$ooHTTP.Open("GET",$url)
$ooHTTP.Send()
$HTMLContents = $ooHTTP.Responsetext
if $HTMLContents <> "" then 
        $array = StringRegExp($HTMLContents, $kaishi&'[^\<]+'&$jieshu, 2, $nOffset)
        If @error = 0 Then
                        $nOffset = @extended
                EndIf
                
        for $a = 0 to UBound($array) - 1
            $aa=$array[$a]
                Next
                        $aa=StringReplace($aa,$kaishi,"")
                        $aa=StringReplace($aa,$jieshu,"")
                        
                if $aa ="" then 
                        GUICtrlSetData($Edit2, "没有找到!"&@CRLF, 1)
                else
                        GUICtrlSetData($Edit2, "电影名称:"&$dy_name&"  播放地址:"&$aa&@CRLF, 1)
                EndIf
Else
        GUICtrlSetData($Edit2, "连接目标失败,请检查网络连接!!!"&@CRLF, 1) 
EndIf
EndFunc
 楼主| 发表于 2010-8-9 22:58:49 | 显示全部楼层
没人能帮助么?
发表于 2010-8-9 23:30:22 | 显示全部楼层
这个获取的不是真实地址,不知道有什么用没
发表于 2010-8-10 02:55:06 | 显示全部楼层
除非你是想做播放器,那还可以,两处正则:
StringRegExp($HTMLContents, '"vTitle"><.+?f="(.+?)".+?\="814.+?title="(.+?)"', 3)
StringRegExp($HTMLContents, 'value="(.+?\.swf)"', 3)
 楼主| 发表于 2010-8-10 08:33:05 | 显示全部楼层
我获取来的地址是直接可以播放的。
 楼主| 发表于 2010-8-10 08:40:31 | 显示全部楼层
本帖最后由 link369 于 2010-8-10 08:42 编辑

斑竹没有明白我的意思。我的意思是在下面这段代码中我要把全不视频播放连接地址提取出来。
然后在打开提取出来的地址,提取最终的播放地址。
现在我要能做到的是提取出第一个地址打开相应地址提取相信播放地址。
而我想做到的是在第一次提取的时候不是提取第一个。而是全部提取。
<ul class="video">
                                                                <li class="vLink"><a href="http://v.youku.com/v_show/id_XMTk2MTQ5NTA4.html" charset="814-1-1" target="video" title="快乐大本营 20100807" onclick="logSearchClick('youku_click','video','http://v.youku.com/v_show/id_XMTk2MTQ5NTA4.html','快乐大本营')"></a></li>
                                                                <li class="vImg"><img src="http://g4.ykimg.com/01270F1F464C5DA2E3DD7900000000EAB6C215-4C30-A394-14AA-E817C0ED08EF" alt="快乐大本营 20100807"/></li>                        
                                                                <li class="vStatus"><span class="status"><span class="time">1:47:08</span></span><span class="bg"></span></li>
                                                                
                                                                <li class="vMenu"></li>
                                                                
                                                                <li class="vTitle"><span class="ico__HD" title="高清"></span> <a href="http://v.youku.com/v_show/id_XMTk2MTQ5NTA4.html" charset="814-1-1" target="video" title="快乐大本营 20100807" onclick="logSearchClick('youku_click','video','http://v.youku.com/v_show/id_XMTk2MTQ5NTA4.html','快乐大本营')"><span class="highlight">快乐</span><span class="highlight">大本营</span> 20100807</a></li>
                                                                                                                                <li class="vTag"><a href="http://www.soku.com/search_video/type_tag_q_%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86">湖南卫视</a> <a href="http://www.soku.com/search_video/type_tag_q_%E5%BF%AB%E4%B9%90%E5%A4%A7%E6%9C%AC%E8%90%A5">快乐大本营</a> <a href="http://www.soku.com/search_video/type_tag_q_20100807">20100807</a> <a href="http://www.soku.com/search_video/type_tag_q_%E7%94%B5%E8%A7%86">电视</a> </li>        
                                                                <li class="vUser">
                                                                                                                                                                                                                                                                                                     <a href="http://u.youku.com/user_show/id_UMTMwMzg5Mg==.html" charset="814-1-1-1" target="_blank" >湖南卫视</a>
                                                                                                                                                                                                                <span class="post">2天前</span>
                                                            </li>
                                                                <li class="vStat">
                                                                        <span class="label">播放:</span> <span class="num">543,040</span><span class="cutRule">|</span>                                                                
                                                                        <span class="label">评论:</span> <span class="num">1,761</span><span class="cutRule">|</span>
                                                                        <span class="label">收藏:</span> <span class="num">277</span>
                                                                </li>
                                                        </ul>

                                                                                                                                                            <ul class="video">
                                                                <li class="vLink"><a href="http://v.youku.com/v_show/id_XMTk0MjQ1MTg4.html" charset="814-1-2" target="video" title="快乐大本营 20100731" onclick="logSearchClick('youku_click','video','http://v.youku.com/v_show/id_XMTk0MjQ1MTg4.html','快乐大本营')"></a></li>
                                                                <li class="vImg"><img src="http://g4.ykimg.com/0100641F464C5D061797A80004F95596A17C26-FBBA-D112-1371-527F615A6E67" alt="快乐大本营 20100731"/></li>                        
                                                                <li class="vStatus"><span class="status"><span class="time">1:43:19</span></span><span class="bg"></span></li>
                                                                
                                                                <li class="vMenu"></li>
                                                                
                                                                <li class="vTitle"><a href="http://v.youku.com/v_show/id_XMTk0MjQ1MTg4.html" charset="814-1-2" target="video" title="快乐大本营 20100731" onclick="logSearchClick('youku_click','video','http://v.youku.com/v_show/id_XMTk0MjQ1MTg4.html','快乐大本营')"><span class="highlight">快乐</span><span class="highlight">大本营</span> 20100731</a></li>
                                                                                                                                <li class="vTag"><a href="http://www.soku.com/search_video/type_tag_q_%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86">湖南卫视</a> <a href="http://www.soku.com/search_video/type_tag_q_%E5%BF%AB%E4%B9%90%E5%A4%A7%E6%9C%AC%E8%90%A5">快乐大本营</a> <a href="http://www.soku.com/search_video/type_tag_q_20100731">20100731</a> <a href="http://www.soku.com/search_video/type_tag_q_%E7%94%B5%E8%A7%86">电视</a> </li>        
                                                                <li class="vUser">
                                                                                                                                                                                                                                                                                                     <a href="http://u.youku.com/user_show/id_UMTMwMzg5Mg==.html" charset="814-1-2-1" target="_blank" >湖南卫视</a>
                                                                                                                                                                                                                <span class="post">9天前</span>
                                                            </li>
                                                                <li class="vStat">
                                                                        <span class="label">播放:</span> <span class="num">653,911</span><span class="cutRule">|</span>                                                                
                                                                        <span class="label">评论:</span> <span class="num">1,346</span><span class="cutRule">|</span>
                                                                        <span class="label">收藏:</span> <span class="num">285</span>
                                                                </li>
                                                        </ul>

                                                                                                                                                            <ul class="video">
                                                                <li class="vLink"><a href="http://v.youku.com/v_show/id_XMTkyNDAwMTgw.html" charset="814-1-3" target="video" title="快乐大本营 20100724" onclick="logSearchClick('youku_click','video','http://v.youku.com/v_show/id_XMTkyNDAwMTgw.html','快乐大本营')"></a></li>
                                                                <li class="vImg"><img src="http://g2.ykimg.com/01270F1F464C4B28F9FC23000000005B725A27-2AED-B0D3-132D-6A3670D5CFCA" alt="快乐大本营 20100724"/></li>                        
                                                                <li class="vStatus"><span class="status"><span class="time">1:41:47</span></span><span class="bg"></span></li>
                                                                
                                                                <li class="vMenu"></li>
                                                                
                                                                <li class="vTitle"><span class="ico__HD" title="高清"></span> <a href="http://v.youku.com/v_show/id_XMTkyNDAwMTgw.html" charset="814-1-3" target="video" title="快乐大本营 20100724" onclick="logSearchClick('youku_click','video','http://v.youku.com/v_show/id_XMTkyNDAwMTgw.html','快乐大本营')"><span class="highlight">快乐</span><span class="highlight">大本营</span> 20100724</a></li>
                                                                                                                                <li class="vTag"><a href="http://www.soku.com/search_video/type_tag_q_%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86">湖南卫视</a> <a href="http://www.soku.com/search_video/type_tag_q_%E5%BF%AB%E4%B9%90%E5%A4%A7%E6%9C%AC%E8%90%A5">快乐大本营</a> <a href="http://www.soku.com/search_video/type_tag_q_20100724">20100724</a> <a href="http://www.soku.com/search_video/type_tag_q_%E7%94%B5%E8%A7%86">电视</a> </li>        
                                                                <li class="vUser">
                                                                                                                                                                                                                                                                                                     <a href="http://u.youku.com/user_show/id_UMTMwMzg5Mg==.html" charset="814-1-3-1" target="_blank" >湖南卫视</a>
                                                                                                                                                                                                                <span class="post">16天前</span>
                                                            </li>
                                                                <li class="vStat">
                                                                        <span class="label">播放:</span> <span class="num">1,032,917</span><span class="cutRule">|</span>                                                                
                                                                        <span class="label">评论:</span> <span class="num">2,553</span><span class="cutRule">|</span>
                                                                        <span class="label">收藏:</span> <span class="num">516</span>
                                                                </li>
                                                        </ul>

                                                                                                                                                            <ul class="video">
                                                                <li class="vLink"><a href="http://v.youku.com/v_show/id_XMTk2MjQzMDM2.html" charset="814-1-4" target="video" title="快乐大本营20100807最新一期" onclick="logSearchClick('youku_click','video','http://v.youku.com/v_show/id_XMTk2MjQzMDM2.html','快乐大本营')"></a></li>
                                                                <li class="vImg"><img src="http://g3.ykimg.com/0100641F464C5E391A9078013822CD261590AD-DC7F-1FDF-0C85-F75B1117F5F6" alt="快乐大本营20100807最新一期"/></li>                        
                                                                <li class="vStatus"><span class="status"><span class="time">1:45:47</span></span><span class="bg"></span></li>
                                                                
                                                                <li class="vMenu"></li>
                                                                
                                                                <li class="vTitle"><a href="http://v.youku.com/v_show/id_XMTk2MjQzMDM2.html" charset="814-1-4" target="video" title="快乐大本营20100807最新一期" onclick="logSearchClick('youku_click','video','http://v.youku.com/v_show/id_XMTk2MjQzMDM2.html','快乐大本营')"><span class="highlight">快乐</span><span class="highlight">大本营</span>20100807最新一期</a></li>
                                                                                                                                <li class="vTag"><a href="http://www.soku.com/search_video/type_tag_q_%E5%BF%AB%E4%B9%90%E5%A4%A7%E6%9C%AC%E8%90%A5">快乐大本营</a> <a href="http://www.soku.com/search_video/type_tag_q_20100807">20100807</a> <a href="http://www.soku.com/search_video/type_tag_q_%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86">湖南卫视</a> <a href="http://www.soku.com/search_video/type_tag_q_%E7%BB%BC%E8%89%BA">综艺</a> </li>        
                                                                <li class="vUser">
                                                                                                                                                                                                                                                                                                     <a href="http://u.youku.com/user_show/id_UMTkxMzQ2Mjg=.html" charset="814-1-4-1" target="_blank" >didi1984</a> <a href="http://www.youku.com/help/view/fid/12" target="_blank"><img src="http://static.youku.com/v1.0.0566/partner/img/sns_icon.gif"/></a>
                                                                                                                                                                                                                <span class="post">1天前</span>
                                                            </li>
                                                                <li class="vStat">
                                                                        <span class="label">播放:</span> <span class="num">118,440</span><span class="cutRule">|</span>                                                                
                                                                        <span class="label">评论:</span> <span class="num">179</span><span class="cutRule">|</span>
                                                                        <span class="label">收藏:</span> <span class="num">39</span>
                                                                </li>
                                                        </ul>
发表于 2010-8-10 12:08:43 | 显示全部楼层
4楼的两处正则,分别用在提取全部视频和提取每个播放地址…

本帖子中包含更多资源

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

×
发表于 2010-8-10 13:10:25 | 显示全部楼层
用正则呵呵,可惜我不会
 楼主| 发表于 2010-8-10 13:21:47 | 显示全部楼层
4楼的两处正则,分别用在提取全部视频和提取每个播放地址…
afan 发表于 2010-8-10 12:08


源码给看下。你的也只能提取到一个哟。还会卡死无响应
发表于 2010-8-10 13:29:33 | 显示全部楼层
回复 9# link369


    卡死?自己看看页面信息:

·我们非常抱歉,网站遇到临时故障。
·给您带来的不便优酷深感歉意,感谢您对优酷的支持!
·请耐心等待一段时间之后再来优酷!


源码在4楼
 楼主| 发表于 2010-8-12 11:06:59 | 显示全部楼层
不好意思,当时是我网络问题。。。。

4楼的2行正则放到我代码里面也不像你的哟。。。
发表于 2010-8-12 12:10:34 | 显示全部楼层
当然还改了其它的如 GuiCtrlSetdata() 部分
 楼主| 发表于 2010-8-15 22:28:15 | 显示全部楼层
呵呵.把你的原码给看看嘛.

用什么方法实现可以全部列出来。..这才是问题
发表于 2010-8-15 23:41:21 | 显示全部楼层
回复 13# link369


    过期了,源码删了~ 其实就改了正则部分而已,其它不重要,需要的话我再写个
发表于 2010-8-16 04:28:40 | 显示全部楼层
只改後面而已,不知道這是不是你要的?
#include <GuiEdit.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3> 
#Include <GuiListBox.au3>
#Include <GuiImageList.au3>

$AForm1 = GUICreate("youku查找", 644, 432, 206, 119)
$Label1 = GUICtrlCreateLabel("电影名称:", 36, 30, 55, 17)
$Input1 = GUICtrlCreateInput("", 100, 25, 191, 21)
$Edit2 = GUICtrlCreateEdit("", 20, 60, 602, 360,$ES_AUTOVSCROLL)
GUICtrlSetColor(-1, 0x008000)
GUICtrlSetData(-1, "")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button2 = GUICtrlCreateButton("开    始", 530, 10, 91, 41, 0)
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
#include <Array.au3>    ; For _ArrayDisplay()

Do
        $nMsg1 = GUIGetMsg()
        Select
                Case $nMsg1=$Button2
                $dy_name=GUICtrlRead($Input1)
                if $dy_name='' or $dy_name='请输入电影名称' then
                        MsgBox(0,'提示:',"请先输入电影名称!!!")
                else
                        GUICtrlSetData($Edit2,'')
                        $sData=BinaryToString(InetRead("http://www.soku.com/search/rss/type/video/q/"&$dy_name),4)
                        $result=StringRegExp($sData,'url="(.+?)".+>(.+?)</title>',3)
                        If @error Then
                                Msgbox(0,"提示:","可能找不到您要的电影")
                        Else
                                For $i = 0 To UBound($result)-1 Step 2
                                        GUICtrlSetData($Edit2,"电影名称:"&$result[$i+1]&@CRLF,1)
                                        GUICtrlSetData($Edit2,"页面地址:"&$result[$i]&@CRLF,1)
                                        Tooltip($result[$i+1])
                                Next
                        EndIf
                EndIf
        EndSelect
Until $nMsg1 = $GUI_EVENT_CLOSE

评分

参与人数 1金钱 +30 贡献 +1 收起 理由
afan + 30 + 1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-6-3 11:58 , Processed in 0.091969 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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