如何从相对链接传递到 nokogiri 中的绝对链接
How to pass from relative links to absolute links in nokogiri
如何从相对链接到绝对链接:
<a href="/foo/ba.pdf">A</a>
<a href="foo/ba.pdf">B</a>
<a href="http://google.com/foo/ba.pdf">A</a>
<a href="#hello">A</a>
应该转变为
<a href="PREFIX/foo/ba.pdf">A</a>
<a href="PREFIX/foo/ba.pdf">B</a>
<a href="http://google.com/foo/ba.pdf">A</a>
<a href="#hello">A</a>
其中 PREFIX
是字符串(用户定义)
使用 URI:
require 'uri'
URI.join('http://google.com/', 'foo')
#<URI::HTTP http://google.com/foo>
首先获取文档:
<% doc = Nokogiri::HTML(foo)%>
其中foo是你想要的内容。
搜索 link 没有方案且没有以“/”开头。所以他们是相对的。使用此 link 附加 '/' + PREPEND
<% for link in doc.search('a[href]').select { |l| URI(l['href']).scheme == nil and URI(l['href']).path.start_with?('/') == false }
link['href'] = '/' + PREPEND + '/' + link['href']
end
%>
如何从相对链接到绝对链接:
<a href="/foo/ba.pdf">A</a>
<a href="foo/ba.pdf">B</a>
<a href="http://google.com/foo/ba.pdf">A</a>
<a href="#hello">A</a>
应该转变为
<a href="PREFIX/foo/ba.pdf">A</a>
<a href="PREFIX/foo/ba.pdf">B</a>
<a href="http://google.com/foo/ba.pdf">A</a>
<a href="#hello">A</a>
其中 PREFIX
是字符串(用户定义)
使用 URI:
require 'uri'
URI.join('http://google.com/', 'foo')
#<URI::HTTP http://google.com/foo>
首先获取文档:
<% doc = Nokogiri::HTML(foo)%>
其中foo是你想要的内容。
搜索 link 没有方案且没有以“/”开头。所以他们是相对的。使用此 link 附加 '/' + PREPEND
<% for link in doc.search('a[href]').select { |l| URI(l['href']).scheme == nil and URI(l['href']).path.start_with?('/') == false }
link['href'] = '/' + PREPEND + '/' + link['href']
end
%>