newuser 发表于 2011-4-21 08:00:23

[已解决]如何自动提取某网页指定区域部分连接并将其文字与连接放到某个窗口?

本帖最后由 newuser 于 2011-4-21 13:30 编辑

可能我的叙述不是很清楚,请大家看图:

这是瑞星网站,我想把红色区域的部分获取过来,放到一个窗口内,不知道行不行?而且是动态的获取那种,就是瑞星网站出现变化,窗口信息也跟着变化?

pizigao 发表于 2011-4-21 08:30:52

这个我也比较关注

lanfengc 发表于 2011-4-21 11:09:27

正则可以提取到。首先获取整个 电脑知识区块的源代码,然后拆分每个链接

papapa314 发表于 2011-4-21 11:24:29

本帖最后由 papapa314 于 2011-4-21 11:27 编辑

回复 1# newuser

楼主可试下以下示例代码,提取链接和链接文字。
要将结果导入listview中或者加入一个自动刷新的功能,相信楼主能够做到。


#include <IE.au3>

$oIE=_IECreate("http://www.rising.com.cn/",0,1,1)

$links=_IELinkGetCollection($oIE)

For $link In $links
        If StringInStr($link.href,"http://it.rising.com.cn/use/software/2011") Then
                MsgBox(0,$link.href,$link.outertext)
        EndIf
Next

newuser 发表于 2011-4-21 13:30:20

回复 4# papapa314
谢谢,没看出规律!
StringInStr($link.href,"http://it.rising.com.cn/use/software/2011")
就可以定位到我要找到的区域,呵呵!

newuser 发表于 2011-4-21 13:55:19

回复 3# lanfengc
谢谢,正则 又忘了!

newuser 发表于 2011-4-21 13:55:47

回复 2# pizigao
同路人,呵呵,我们共同努力!

newuser 发表于 2011-4-21 13:56:18

回复 4# papapa314

我会努力的!

骗子 发表于 2011-4-21 16:56:47

本帖最后由 骗子 于 2011-4-21 16:58 编辑

我也来个班门弄斧,其实就是打开瑞星的网站,只不过把其他的部分隐藏起来了

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
$oIE = _IECreateEmbedded()
GUICreate("rising", 280, 350,200, 200)
$GUIActiveX = GUICtrlCreateObj($oIE, -390, -970,700,1500)
_IENavigate($oIE,"http://www.rising.com.cn/")

$oIE.document.parentWindow.execscript("etabit2('tab2',4,2)")

GUISetState()
While 1

        $msg = GUIGetMsg()
        Select
                Case $msg = $GUI_EVENT_CLOSE
                        Exit
        EndSelect
WEnd


papapa314 发表于 2011-4-21 17:33:54

回复 9# 骗子


    呵呵,这个看起来不错。应该还有一种方法,提取这一块的源码,然后再用函数
_IEDocWriteHTML 写出来。

有个问题想请教下:$oIE.document.parentWindow.execscript("etabit2('tab2',4,2)")
关于ie对象的这些属性和方法是从哪里查到的? 我找了一个IE对象函数大总结,但好像里面一些东西无法用在au3上。

http://wenku.baidu.com/view/14c1faf2f90f76c661371a10.html

haijie1223 发表于 2011-4-21 21:49:28

呵呵 ls几位好热心 支持一下

newuser 发表于 2011-4-22 07:56:57

回复 9# 骗子
对HTML并不懂,这个 ("etabit2('tab2',4,2)")是从源代码中提取出来的吧,给解释一下吧!

骗子 发表于 2011-4-22 08:59:48

回复骗子


    呵呵,这个看起来不错。应该还有一种方法,提取这一块的源码,然后再用函数
_IEDocW ...
papapa314 发表于 2011-4-21 17:33 http://www.autoitx.com/images/common/back.gif

$oIE.document.parentWindow.execscript("etabit2('tab2',4,2)")
这个是从论坛里看到的,忘了是哪位高手写的了,作用好像就是执行页面中的 javascript

etabit2('tab2',4,2)这个是在源代码中找到的

骗子 发表于 2011-4-22 09:04:31

其实我也不懂,就是东拼西凑出来的
$oIE.document.parentWindow.execscript("return etabit2('tab2',4,2)") 这个命令是在一个讨论如何运行网页中javascript的帖子中抄袭的
至于$GUIActiveX = GUICtrlCreateObj($oIE, -390, -970,700,1500) 这个是从一个讨论网易邮箱登陆的帖子中抄来的

回复 12# newuser
用火狐选定页面中的文本,右键点击,有一个“查看选中部分的源代码”的选项,点击就能看到了
<div class="TabBox">
            <div class="TabLinks">
            <ul>
                <li><a onclick="return etabit2('tab2',4,0)" onmousemove="return etabit('tab2',4,0)" id="tab2_btn_0" class="" href="#"> 最新资讯</a></li>
                <li><a class="" onclick="return etabit2('tab2',4,1)" onmousemove="return etabit('tab2',4,1)" id="tab2_btn_1" href="#">应用安全</a></li>
                <li><a class="" onclick="return etabit2('tab2',4,2)" onmousemove="return etabit('tab2',4,2)" id="tab2_btn_2" href="#">电脑知识</a></li>
                <li><a class="selected" onclick="return etabit2('tab2',4,3)" onmousemove="return etabit('tab2',4,3)" id="tab2_btn_3" href="#">病毒防治</a></li>   
            </ul>

            </div>
          </div>
=================================
执行$oIE.document.parentWindow.execscript("return etabit2('tab2',4,2)")
报错,后来把return 删了竟然成功了

newuser 发表于 2011-4-22 10:49:22

回复 14# 骗子
谢谢,什么都得看看,呵呵!
页: [1]
查看完整版本: [已解决]如何自动提取某网页指定区域部分连接并将其文字与连接放到某个窗口?