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

[IE类操作] 如何用正则获取这个网址[已解决]

  [复制链接]
发表于 2011-2-25 16:52:38 | 显示全部楼层 |阅读模式
本帖最后由 骗子 于 2011-2-27 15:19 编辑

其实就是用了《水木子》给的代码,问题虽然解决了,但是还是有点疑问,在9楼,有知道的麻烦告诉我下



源代码:
</div>
<iframe id="ifm0" frameborder="0" width="810" scrolling="no" height="810" style="top: 0px; left:0px;" src="xxxxxx"></iframe>
</div>

想获取上面xxxxx的部分,因为中间的东西那部分是变化的一个网址,很长,我简化成XXXXX,

我的想法是用正则获取这个地址然后在浏览器中打开

补充一下,这个网页有多个 src="xxxxxx",但是只有一个<iframe id="ifm0" frameborder="0" width="810" scrolling="no" height="810" style="top: 0px; left:0px;" src="xxxxxx"></iframe>只有一个,我按照楼下的三个大侠的正则只能确认到第一个src="xxxxxx",但这个不是我想要的
我根据几位热心的兄弟给的提示在 au3.REHelper中自己修改了一下,可以找到1条记录,也就是我想要的,如下图

但是我在脚本
$aRe = StringRegExp($sHTML, '(?i)(?<=left:0px;" src=")[^"]+', 3)
MsgBox (0,"",$aRe)
MsgBox (0,"",$aRe[0])
_ArrayDisplay($aRe, 'Default Search')
执行后报错MsgBox (0,"",$aRe)出现1说明应该找到了,但是MsgBox (0,"",$aRe[0])就报错了
F:\autoit3\2012\aaaa.au3 (16) : ==> ???????????.:
MsgBox (0,"",$aRe[0])
MsgBox (0,"",$aRe^ ERROR

这个是怎么回事


本帖子中包含更多资源

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

×
发表于 2011-2-25 17:12:39 | 显示全部楼层
_StringBetween
自带的函数,很方便,换行可以用@crlf代替
发表于 2011-2-25 17:23:08 | 显示全部楼层
$sText = '</div>' & @CRLF & _
                '<iframe id="ifm0" frameborder="0" width="810" scrolling="no" height="810" style="top: 0px; left:0px;" src="www.autoitx.com"></iframe>' & @CRLF & _
                "</div>'"

$aRe = StringRegExp($sText, '(?i)(?<=src=")[^"]+', 3)
ShellExecute($aRe[0])

评分

参与人数 1金钱 +10 收起 理由
骗子 + 10 谢谢,我又补充了一点,麻烦再给看一下

查看全部评分

发表于 2011-2-25 17:25:45 | 显示全部楼层
src="(.*?)"

评分

参与人数 1金钱 +20 收起 理由
骗子 + 20 谢谢,我又补充了一点,麻烦再给看一下

查看全部评分

发表于 2011-2-25 19:45:52 | 显示全部楼层
(?i)(?<=left:0px;"\hsrc=")[^"]+

评分

参与人数 1金钱 +10 收起 理由
骗子 + 10 好像不行: $aRe = StringRegExp($sText, ...

查看全部评分

发表于 2011-2-25 20:15:30 | 显示全部楼层
不懂正则,帮你顶上,顺便学习学习
发表于 2011-2-25 21:25:35 | 显示全部楼层
我也来一个
(?<=src=").+(?="><)

呵呵最近很喜欢正则

评分

参与人数 1金钱 +10 收起 理由
骗子 + 10 有效

查看全部评分

发表于 2011-2-25 23:46:05 | 显示全部楼层
表达式 = (?s).+?left:0px;" src="(.*?)".+
替换   = $1

评分

参与人数 1金钱 +10 收起 理由
骗子 + 10 有效,替换 = $1是什么意思

查看全部评分

 楼主| 发表于 2011-2-27 15:13:15 | 显示全部楼层
本帖最后由 骗子 于 2011-2-27 15:14 编辑

解决方案:
#include <Array.au3>
$sText = '</div>' & @CRLF & _
                '<iframe id="ifm0" frameborder="0" width="810" scrolling="no" height="810" style="top: 0px; left:0px;" src="http://apps.manyou.com/1061199"></iframe>' & @CRLF & _
                "</div>'"
$aRe = StringRegExp($sText, '(?i)(?<=src=")[^"]+', 3)
_ArrayDisplay($aRe, "符合src=“xxxx”类型的内容")
MsgBox(0,"",$aRe[4])


疑问:
#include <Array.au3>
$sText = '</div>' & @CRLF & _
                '<iframe id="ifm0" frameborder="0" width="810" scrolling="no" height="810" style="top: 0px; left:0px;" src="http://apps.manyou.com/1061199"></iframe>' & @CRLF & _
                "</div>'"
$aRe = StringRegExp($sText, '(?s).+?left:0px;" src="(.*?)".+', 3)
_ArrayDisplay($aRe, "符合src=“xxxx”类型的内容")
,有效
但是当$sText = _IEBodyReadHTML ($oIE)就没有内容显示,用msgbox的话报错,就像一楼的
#include <Array.au3>
$sText = _IEBodyReadHTML ($oIE) ;读取网页的源文件
$aRe = StringRegExp($sText, '(?s).+?left:0px;" src="(.*?)".+', 3)
_ArrayDisplay($aRe, "符合src=“xxxx”类型的内容")
 楼主| 发表于 2011-2-27 15:20:43 | 显示全部楼层
难道问题出在读取网页源代码的内容有换行?但是又不应该啊,一楼的源代码是我直接复制出来的
发表于 2011-2-27 15:32:15 | 显示全部楼层
问题究竟解决了吗?

评分

参与人数 1金钱 +10 收起 理由
骗子 + 10 解决了,就是用你给我的方法

查看全部评分

 楼主| 发表于 2011-2-28 14:35:29 | 显示全部楼层
#include <Array.au3>
$sText = '</div>' & @CRLF & _
                '<iframe id="ifm0" frameborder="0" width="810" scrolling="no" height="810" style="top: 0px; left:0px;" src="http://apps.manyou.com/1061199"></iframe>' & @CRLF & _
                "</div>'"
$aRe = StringRegExp($sText, '(?s).+?left:0px;" src="(.*?)".+', 3)
_ArrayDisplay($aRe, "符合src=“xxxx”类型的内容")
能找到符合的内容,有显示

但是下面的就不行了,找不到符合的。问题是上面的内容就是我从网页源代码中摘出来的,应该都可以才对啊
#include <Array.au3>
#include <IE.au3>
$oIE = _IECreate("http://www.iopq.com/userapp-app-id-1061199.html")
$sText = _IEBodyReadHTML ($oIE) ;读取网页的源文件
$aRe = StringRegExp($sText, '(?s).+?left:0px;" src="(.*?)".+', 3)
_ArrayDisplay($aRe, "符合src=“xxxx”类型的内容")
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-13 07:09 , Processed in 0.114987 second(s), 34 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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