找回密码
 加入
搜索
查看: 2391|回复: 11

如何获取一个网页中的文本超链接的链接

[复制链接]
发表于 2009-10-2 10:54:07 | 显示全部楼层 |阅读模式
这个网站 http://www.uname.cn/dic/wordlist.asp
我想获取这个文本超链接的链接

本帖子中包含更多资源

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

×
 楼主| 发表于 2009-10-2 11:44:32 | 显示全部楼层
为什么这样不管用?

#include <IE.au3>
$oIE = _IE_Example ("http://www.uname.cn/dic/wordlist.asp")
$oLinks = _IELinkGetCollection ($oIE)
$iNumLinks = @extended
MsgBox(0, "Link Info", $iNumLinks & " links found" & $oLinks)
For $oLink In $oLinks
    MsgBox(0, "Link Info", $oLink.href)
Next
 楼主| 发表于 2009-10-2 12:12:20 | 显示全部楼层
#include <IE.au3>
$oIE = _IE_Example ("http://www.uname.cn/dic/zidian.asp")
$oTable = _IETableGetCollection ($oIE, 1)
$aTableData = _IETableWriteToArray ($oTable)
MsgBox(0,"",$aTableData[1][1])
MsgBox(0,"",$aTableData[2][2])
MsgBox(0,"",$aTableData[3][3])
MsgBox(0,"",$aTableData)

怎么这样也不管用?
发表于 2009-10-2 12:12:32 | 显示全部楼层
本帖最后由 wxb2422 于 2009-10-2 12:18 编辑

#include <IE.au3>
$oIE = _IECreate ("http://www.uname.cn/dic/wordlist.asp",0,0,1,0)
$oLinks = _IELinkGetCollection ($oIE)
$i=0
For $oLink In $oLinks
        $i=$i+1
        MsgBox(0,"链接"&$i,$oLink.href ,1)
Next

这是获取全部链接,选择你自己想要的那个~
我也刚学。。说得不对请谅解

评分

参与人数 1金钱 +6 收起 理由
ac5474012 + 6 再来看看

查看全部评分

 楼主| 发表于 2009-10-2 13:29:49 | 显示全部楼层
本帖最后由 ac5474012 于 2009-10-2 13:36 编辑

4# wxb2422

可是问题在于我要取出这其中某一次的数值要怎么做呢?第72次。
 楼主| 发表于 2009-10-2 14:20:05 | 显示全部楼层
我用了这种办法,能不恩那个直接提取?
$i = 0
For $oLink In $oLinks
        $i = $i + 1
        FileWriteLine("fasdf.txt", $i & "-" & $oLink.href)
        If $i = 75 Then
                $s = $oLink.href
        EndIf
;~         MsgBox(0,"链接"&$i,$oLink.href ,1)
Next
MsgBox(0, "", $s)
全文
#include <IE.au3>
#include <Constants.au3>
#include <Date.au3>
$oIE = _IECreate("http://www.uname.cn/dic/zidian.asp")
$a = _IEGetObjByName($oIE, "gb")
_IEFormElementSetValue($a, "国")
$oSubmit = _IEGetObjByName($oIE, "gb")
$b = _IEGetObjByName($oIE, "Submit")
_IEAction($b, "click")
_IELoadWait($oIE)
$oLinks = _IELinkGetCollection($oIE)
$i = 0
For $oLink In $oLinks
        $i = $i + 1
        FileWriteLine("fasdf.txt", $i & "-" & $oLink.href)
        If $i = 75 Then
                $s = $oLink.href
        EndIf
;~         MsgBox(0,"链接"&$i,$oLink.href ,1)
Next
MsgBox(0, "", $s)
发表于 2009-10-2 16:20:00 | 显示全部楼层
其实很多编程里很多东西 都是用的历遍

很多 find indexof 之类 都是封装的 for in  for  to

评分

参与人数 1金钱 +1 收起 理由
ac5474012 + 1 你的意思是没办法?

查看全部评分

 楼主| 发表于 2009-10-2 16:55:02 | 显示全部楼层
#include <IE.au3>
_IELinkGetCollection ( 对象变量 [, 索引 = -1] )
我觉得
_IECreate("http://www.uname.cn/dic/zidian.asp",79)
这样应该就能得到我想要的第79个,但是却不行。它说它返回的是一个对象集合。所以我就要一个一个看吗?
能不能一下子就提取出我想要的第79个?
发表于 2009-10-2 16:56:34 | 显示全部楼层
我的意思是 就是历遍加判断就行了
If $i = 75 Then
MsgBox(0, "", $oLink.href)
ExitLoop
EndIf
发表于 2009-10-2 17:09:07 | 显示全部楼层
For $oLink In $oLinks
    If StringRegExp($oLink.href, 'http://www.uname.cn/html/dic/.+') then $s = $oLink.href
Next
MsgBox(0, "Link Info", $s)
是不是这意思?
 楼主| 发表于 2009-10-2 18:17:29 | 显示全部楼层
算是吧,我就是想更优化点。
发表于 2009-10-2 18:41:33 | 显示全部楼层
#include <IE.au3>
$oIE = _IECreate("http://www.uname.cn/dic/zidian.asp")
$a = _IEGetObjByName($oIE, "gb")
_IEFormElementSetValue($a, "国")
$b = _IEGetObjByName($oIE, "Submit") 
_IEAction($b, "click")
_IELoadWait($oIE)
$sHTML = _IEBodyReadHTML($oIE) 
$Link = StringRegExp($sHTML, 'href="(/html/dic/[^"]+)">', 3)
If @Error = 0 Then  $oLink = 'http://www.uname.cn' & $Link[0]
MsgBox(0, "Link Info", $oLink)

评分

参与人数 1金钱 +5 收起 理由
ac5474012 + 5 哦~又是正会表达,你能看看我另一个帖子的问 ...

查看全部评分

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

本版积分规则

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

GMT+8, 2024-9-22 19:25 , Processed in 0.088061 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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