找回密码
 加入
搜索
查看: 10539|回复: 22

[系统综合] 帮写一个正则

 火.. [复制链接]
发表于 2014-4-27 02:04:40 | 显示全部楼层 |阅读模式
本帖最后由 sex123 于 2014-4-27 02:06 编辑

http://www.ncbi.nlm.nih.gov/pubmed/24755572
http://www.ncbi.nlm.nih.gov/pubmed/24406157
http://www.ncbi.nlm.nih.gov/pubmed/24753396
这些网址右上角均有一个图标,网页源代码都有icon for的字样,想把这些图标所对应的url提出来。最好是根据icon for写正则表达式,以前也求过一次,但是正则失效了。
发表于 2014-4-27 08:30:37 | 显示全部楼层
好久没来论坛了,懒得写~好懒
发表于 2014-4-27 09:29:57 | 显示全部楼层
不知道是不是你要的结果
(?<=icon" href="//)[^"]+
 楼主| 发表于 2014-4-27 10:18:38 | 显示全部楼层
不知道是不是你要的结果
水木子 发表于 2014-4-27 09:29

运行没反应,另外,是icon for 不是icon
Local $html=BinaryToString(InetRead("http://www.ncbi.nlm.nih.gov/pubmed/24755572"))
Local $strrg=StringRegExp($html,'(=icon href=)[^]+', 3)
If Not @error Then MsgBox(0, '', $strrg[0])
发表于 2014-4-27 10:27:57 | 显示全部楼层
回复 1# sex123
#include <IE.au3>

Local $oIE[3]


$oIE[0] = "http://www.ncbi.nlm.nih.gov/pubmed/24755572"
$oIE[1] = "http://www.ncbi.nlm.nih.gov/pubmed/24406157"
$oIE[2] = "http://www.ncbi.nlm.nih.gov/pubmed/24753396"

If Not FileExists(@ScriptDir & "\_geticonfor") Then _
                DirCreate(@ScriptDir & "\_geticonfor")

For $i = 0 To 2
        _geticonfor($oIE[$i])
Next

ShellExecute(@ScriptDir & "\_geticonfor")

Func _geticonfor($url)
        Local $obj = _IECreate($url, 0, 0)
        Local $Str = _IEBodyReadHTML($obj)
        _IEQuit($obj)

        If Not @error Then
                Local $Test = StringRegExp($Str, '(?si)alt="icon for.*?src="([^"]+)"', 1)

;~                 MsgBox(0, $i, "http:" & $Test[0])
                InetGet("http:" & $Test[0], @ScriptDir & "\_geticonfor" & StringRegExpReplace($Test[0], ".*?http:--(.+)", "\1"))
        EndIf
EndFunc   ;==>_geticonfor
 楼主| 发表于 2014-4-27 10:37:59 | 显示全部楼层
回复  sex123
lixiaolong 发表于 2014-4-27 10:27



    晕,我不是要图片,我要的是图片所代表的链接地址,就是说点击图片所转到的http地址链接。
发表于 2014-4-27 10:54:47 | 显示全部楼层
本帖最后由 lixiaolong 于 2014-4-27 11:06 编辑

回复 6# sex123


试试
StringRegExp($Str, '(?i)<a href="([^"]+)".*?(?=alt="icon for)', 1)
发表于 2014-4-27 11:13:57 | 显示全部楼层
本帖最后由 水木子 于 2014-4-27 11:15 编辑

回复 6# sex123

提问就有问题,根本没说出自己要的结果,让我们猜啊!哎! 真心难!

举例说明自己想要得到的结果。
 楼主| 发表于 2014-4-27 11:42:47 | 显示全部楼层
回复  sex123

提问就有问题,根本没说出自己要的结果,让我们猜啊!哎! 真心难!

举例说明自己想要 ...
水木子 发表于 2014-4-27 11:13



    不好意思呀,我说的不是太清楚,我举列子吧。
比如:
http://www.ncbi.nlm.nih.gov/pubmed/24755572
这个网页右上角有一个图标
左键点击这个图标,选复制链接地址后,得到的
dx.plos.org/10.1371/journal.pone.0094898
就是我想要的,当然最好是前有加上一个http://就最好了。
发表于 2014-4-27 12:30:41 | 显示全部楼层
回复 9# sex123
(?<=icons"><a href=")[^"]+
 楼主| 发表于 2014-4-27 13:47:13 | 显示全部楼层
回复  sex123
水木子 发表于 2014-4-27 12:30



    按你写的,没反应。
Local $html=BinaryToString(InetRead("http://www.ncbi.nlm.nih.gov/pubmed/24755572"),1)
Local $strrg=StringRegExp($html,'(?<=icons"><a href=")[^"]+', 3)
If Not @error Then MsgBox(0, '', $strrg[0])
发表于 2014-4-27 15:30:48 | 显示全部楼层
你这个需要转码吗?貌似不需要吧!
 楼主| 发表于 2014-4-27 15:45:08 | 显示全部楼层
你这个需要转码吗?貌似不需要吧!
水木子 发表于 2014-4-27 15:30



    不知道需不需要转码,什么情况下转码,什么情况下不转吗呢,反正现在没有弹出条。
 楼主| 发表于 2014-4-27 16:10:02 | 显示全部楼层
你这个需要转码吗?貌似不需要吧!
水木子 发表于 2014-4-27 15:30



  不转码,也没反应。
Local $html=inetRead("http://www.ncbi.nlm.nih.gov/pubmed/24755572",1)
Local $strrg=StringRegExp($html,'(?<=icons"><a href=")[^"]+', 3)
If Not @error Then MsgBox(0, '', $strrg[0])
发表于 2014-4-27 16:34:10 | 显示全部楼层
本帖最后由 水木子 于 2014-4-27 16:35 编辑

有点迷茫,不知道是不是你要的。
Local $html = BinaryToString(InetRead("http://www.ncbi.nlm.nih.gov/pubmed/24755572"), 1)
Local $strrg=StringRegExp($html,'icon-triangle.+?href="([^"]+)', 3)
If Not @error Then MsgBox(0, 0, $strrg[0])
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-15 18:30 , Processed in 0.083740 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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