使用 Nokogiri 获取 "onclick" URL 值



anchor变量内容 此链接:

anchor = <a href="javascript:void(0);" class="cvt-nowrap" onclick="javascript:window.open('http://url.com/persona/WebLinkEntryPoint.php?idowner=36054&amp;code=DetalleOferta&amp;idofe=140543&amp;no_links=true', '', 'left=10, top=10, width=1200, height=860, resizable=yes, scrollbars=yes, menubar=no, toolbar=no, directories=no, location=no, status=no'); return false;"><img src="http://static.cvtools.com/public/static/abantia/images/2013-04-02-11-14-50.7705_link.gif" border="0" align="absmiddle">Here text</a>

我正在使用 nokogiri gem,我想知道是否可以提取此链接的下一个 url:

http://url.com/persona/WebLinkEntryPoint.php?idowner=36054&code=DetalleOferta&idofe=140544&no_links=true

Nokogiri 是一个 HTML 解析器。 OnClick 处理程序中的 URL 是 JavaScript。 Nokogiri 不会为你解析它,所以你必须自己做。 例如,通过正则表达式:

html = %q(<a href="javascript:void(0);" class="cvt-nowrap" onclick="javascript:window.open('http://url.com/persona/WebLinkEntryPoint.php?idowner=36054&amp;code=DetalleOferta&amp;idofe=140543&amp;no_links=true', '', 'left=10, top=10, width=1200, height=860, resizable=yes, scrollbars=yes, menubar=no, toolbar=no, directories=no, location=no, status=no'); return false;"><img src="http://static.cvtools.com/public/static/abantia/images/2013-04-02-11-14-50.7705_link.gif" border="0" align="absmiddle">Here text</a>)
doc = Nokogiri.parse html
doc.xpath('//a[@onclick]').first.attributes['onclick'].content.match(/'([^']+)/)[1]
=> "http://url.com/persona/WebLinkEntryPoint.php?idowner=36054&code=DetalleOferta&idofe=140543&no_links=true"

最新更新