帮我写一个正规表达式,谢.
读出一个网页的全部内容后,得到PDF ( xxxK),这个XXX是变化的. 想通过正则得到这个PDF的链接,就是PDF (125 K)的前面.以面是部分内容.<LI><!-- return to gateway -->
<LI>
<DIV class=icon_exportarticlesci_dir title="Export citation">
<DIV class=icon></DIV><A href="/science?_ob=DownloadURL&_method=confirm&_eidkey=3-s2.0-B9780122841514500002&count=1&_docType=FLA&zone=toolbar&_acct=C000228598&_version=1&_userid=10&md5=058f256059053d8e6012440cf676943f">Export citation</A> </DIV>
<LI>
<DIV class=icon_pdf>
<DIV class=icon></DIV><A class="big pdf ext_sdlink" id=pdfLink title="Download PDF" style="CURSOR: pointer" href="http://pdn.sciencedirect.com/science?_ob=MiamiImageURL&_cid=275975&_user=10&_pii=B9780122841514500002&_check=y&_origin=article&_zone=toolbar&_coverDate=31-Dec-2005&_idxType=GenInfo&view=c&originContentFamily=nonserial&wchp=dGLbVlB-zSkWb&md5=e2daf201315801e5860469956abdcac3&pid=3-s2.0-B9780122841514500002-main.pdf" target=newPdfWin suggestedArtURL="http://www.sciencedirect.com/science/suggestedArt/citeList/pii/B9780122841514500002/eid/3-s2.0-B9780122841514500002/nonserial" pdfurl="http://pdn.sciencedirect.com/science?_ob=MiamiImageURL&_cid=275975&_user=10&_pii=B9780122841514500002&_check=y&_origin=article&_zone=toolbar&_coverDate=31-Dec-2005&_idxType=GenInfo&view=c&originContentFamily=nonserial&wchp=dGLbVlB-zSkWb&md5=e2daf201315801e5860469956abdcac3&pid=3-s2.0-B9780122841514500002-main.pdf" jQuery17104474407950526011="2">PDF (125 K)</A> </DIV>
<LI class=optionsPos>
<DIV id=moreOptionsButton title="Show article options"><A href="#">More options...</A>
<DIV class=down_sci_dir></DIV></DIV><!-- More Options Starts-->
<DIV class="articleOptions articleOptionssci_dir" id=moreOptionsMenu>
<UL>
<LI> 晕,好像真实地址不在这附近.那就帮我写一个正则,能读出这个PDF (125k)吧,这个125是变化的. PDF\s*\(\d*k\) 26011="2">PDF (125 K)</A> </DIV>
PDF和(有空格
125和K有空格
你写的好像不对吧. PDF\s*\(\d*\s*k\) #include <IE.au3>
; #include <IEQuery.au3>
$oIE = _IECreate("http://www.sciencedirect.com/science/article/pii/B9780122841514500002")
;_IEQuery通用获取元素对象
; $Ele = _IEQuery($oIE,"A",'class="big pdf ext_sdlink",outertext="PDF (125 K)"')
$PDF= StringRegExp($oIE,'PDF\s*\(\d*\s*k\)', 1)
MsgBox(0,'999',$PDF)
_IELinkClickByText($oIE,$PDF)
还是不对,总是点击不了. $oIE不是字符串对象。 $oIE不是字符串对象。
seeyou 发表于 2012-9-22 11:34 http://www.autoitx.com/images/common/back.gif
那怎么办?要把$oIE变成字符串吗?可以我是按照别人写的代码我改了改,而且别人写的我没改的话,是可以运行的,不知道我一改不就行了.具体代码应该是什么样的呢. Try this: $code = _IEDocReadHTML($oIE) Try this: $code = _IEDocReadHTML($oIE)
seeyou 发表于 2012-9-22 12:05 http://www.autoitx.com/images/common/back.gif
#include <IE.au3>
; #include <IEQuery.au3>
$oIE = _IECreate("http://www.sciencedirect.com/science/article/pii/B9780122841514500002")
;_IEQuery通用获取元素对象
; $Ele = _IEQuery($oIE,"A",'class="big pdf ext_sdlink",outertext="PDF (125 K)"')
$PDF= StringRegExp($oIE,'PDF\s*\(\d*\s*k\)', 1)
MsgBox(0,'999',$PDF)
$code = _IEDocReadHTML($oIE)
_IELinkClickByText($code,$PDF)
还是不好用,没反应,我感觉你说的不对. 本帖最后由 seeyou 于 2012-9-22 13:35 编辑
我说的的确不能帮你打成最后的结果。但是可以帮助你看到代码里的错误。
下面一段代码可以帮助你实现你要的结果,不过你要注意浏览器的行为(有没有把弹出的网页拦截了),当然最终能否实现还需要你自己进行微调。
#include <IE.au3>
Local $oIE = _IECreate("http://www.sciencedirect.com/science/article/pii/B9780122841514500002")
Local $oLinks = _IELinkGetCollection($oIE)
$sSearchString = "PDF (125 K)"
For $oLink in $oLinks
Local $sLinkText = _IEPropertyGet($oLink, "innerText")
If StringInStr($sLinkText, $sSearchString) Then
_IEAction($oLink, "click")
endif
Next
PDF[\s]*\((.*?)K 我说的的确不能帮你打成最后的结果。但是可以帮助你看到代码里的错误。
下面一段代码可以帮助你实现你要的 ...
seeyou 发表于 2012-9-22 13:32 http://www.autoitx.com/images/common/back.gif
你写的这个有正则表达式在里面吗?我的要求你没看清吧,那个PDF后面的数字(125k)是会变化的. PDF[\s]*\((.*?)K
jtzxgfy 发表于 2012-9-22 15:47 http://www.autoitx.com/images/common/back.gif
你写的也不对吧,K后面还有括号的.你的有吗? PDF[\s]*\((.*?)K
结果:125
要提取括号内的:PDF[\s]*\((.*?K)\)
结果:125 K
页:
[1]
2