得到" onclick"与nokogiri的url值

时间:2013-10-15 09:21:43

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 nokogiri

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,我想知道是否可以提取此链接的下一个网址:

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

1 个答案:

答案 0 :(得分:2)

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"