帮我找到一种修改http网址最好的办法
有一个叫EZ的文献下载权限,简单点说就是把http原地址改为EZ地址,即可下载文献。例如:http://www.jbc.org/content/290/6/3238.full.pdf
这个网址下载pdf文件需要权限,而挂上EZ后就可以获得权限下载了。修改方法如下,在一级域名后面加EZ即,把.sci-hub.org放在一级域名后面,变成
http://www.jbc.org.sci-hub.org/content/290/6/3238.full.pdf
但是一级域名变化多样,怎么能想出一种办法能有效的修改这种地址呢?
其他地址举例如下:
http://www.jneurosci.org/content/34/29/9574.full.pdf
http://pediatrics.aappublications.org/content/123/3/959.full.pdf
http://www.sciencedirect.com/science/article/pii/S0955286312001520/pdf?md5=9a949d9535b359e24159459b1c1f3152&pid=1-s2.0-S0955286312001520-main.pdf
http://graphics.tx.ovid.com/ovftpdfs/FPDDNCOBOFIHGC00/fs047/ovft/live/gv024/00006123/00006123-201311000-00019.pdf
http://link.springer.com/content/pdf/10.1007/s11605-011-1810-5.pdf 补充说一句,目前想到的办法是根据/这个字符,第一个出现的这个/前面加上EZ,但是第一个出现的/不能是//,是不是用到正则呢? Local $Str = _
'http://www.jneurosci.org/content/34/29/9574.full.pdf' & @CRLF & _
'http://pediatrics.aappublications.org/content/123/3/959.full.pdf' & @CRLF & _
'http://www.sciencedirect.com/science/article/pii/S0955286312001520/pdf?md5=9a949d9535b359e24159459b1c1f3152&pid=1-s2.0-S0955286312001520-main.pdf' & @CRLF & _
'http://graphics.tx.ovid.com/ovftpdfs/FPDDNCOBOFIHGC00/fs047/ovft/live/gv024/00006123/00006123-201311000-00019.pdf' & @CRLF & _
'http://link.springer.com/content/pdf/10.1007/s11605-011-1810-5.pdf' & @CRLF & _
'http://www.jneurosci.org'
;~MsgBox(0, '原字符串', $Str)
Local $sRE = StringRegExpReplace($str, '(?<=//)(.+?)(?=/|\s|$)', '\1.sci-hub.org')
MsgBox(0, '替换结果', $sRE) 本帖最后由 user030 于 2015-3-29 12:48 编辑
我刚刚从VBScript那里转到au3的怀抱中,au3基础不行,但手痒用vbs写个了,给大伙瞧瞧:
Dim TXTPath
TXTPath = "C:\Users\hulu\Desktop\URL.txt" '存放URL的文本路径
Set fso = createobject("scripting.filesystemobject")
Set fileread = fso.opentextfile(TXTPath,1)
writeTXT crlf & "修改后的URL:"
Do until fileread.atendofstream ' 遍历每一行
strline = fileread.readline
' wscript.echo strline '显示一行内容
If strline="" or Instr(strline,"修改后")>0 then
exit do
End if
writeTXT modificateURL(strline)
Loop
fread.close
Set fso=nothing
Function modificateURL(byval url) ' 修改URL
Addtext = ".sci-hub.org"
Array0 = split(url,"//")
Array1 = split(Array0(1),"/")
newURL = Array0(0) &"//"& Array1(0) & Addtext & right(url,len(url) - len(Array0(0) &"//"& Array1(0)))
modificateURL = newURL
End Function
Function writeTXT(byval word) ' 写入到原来的那个txt文本中
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile(TXTPath, 8, false) '第二个参数 2 表示重写,如果是 8 表示追加
f.WriteLine(word)
f.Close()
Set f = nothing
Set fs = nothing
End Function 本帖最后由 netegg 于 2015-3-29 13:10 编辑
我刚刚从VBScript那里转到au3的怀抱中,au3基础不行,但手痒用vbs写个了,给大伙瞧瞧:
Dim TXTPath
T ...
user030 发表于 2015-3-29 12:45 http://www.autoitx.com/images/common/back.gif
那就试试改改
Dim $TXTPath = "C:\Users\hulu\Desktop\URL.txt" ;存放URL的文本路径
Dim $oFso = objcreate("scripting.filesystemobject")
Dim $oFileread = $oFso.opentextfile($TXTPath,1)
FileWrite($TXTPath, @crlf & "修改后的URL:")
Do
$strline = $oFileread.readline
; wscript.echo strline ;显示一行内容
If $strline="" or stringInstr($strline,"修改后")>0 then
exitloop
Endif
FileWrite($TXTPath, modificateURL($strline)
until $oFileread.atendofstream
$oFso = 0
Func modificateURL(ByRef $url) ; 修改URL
$Addtext = ".sci-hub.org"
$Array0 = stringsplit($url,"//", 2)
$Array1 = stringsplit($Array0(1),"/",2)
Return $Array0(0) &"//"& $Array1(0) & $Addtext & stringright($url,stringlen($url) - stringlen($Array0 &"//"& $Array1))
;$modificateURL = newURL
EndFunc
Func writeTXT(ByRef $word) ;写入到原来的那个txt文本中
Dim $oFs = objcreate("Scripting.FileSystemObject")
Dim$of = $oFs.OpenTextFile($TXTPath, 8, false) ;第二个参数 2 表示重写,如果是 8 表示追加
$of.WriteLine($word)
$of.Close()
$of = ''
$ofs = ''
EndFunc 回复 5# netegg
谢谢大大,原来转换成au3是这样的,好像明白了些什么{:face (238):},学习了
页:
[1]