我想用 Nokogiri 遍历一些 HTML 文档。获取 XML 对象后,我希望 Nokogiri 使用的最后一个 URL 获取文档作为我的 JSON 响应的一部分。
def url = "http://ow.ly/hh8ri"
doc = Nokogiri::HTML(open(url)
...
Nokogiri 在内部将其重定向到http://www.mp.rs.gov.br/imprensa/noticias/id30979.html,但我想访问它。
我想知道“doc”对象是否可以访问某些 URL 作为属性或其他东西。有人知道解决方法吗?
顺便说一句,我想要完整的 URL,因为我正在遍历 HTML 来查找<img>
标签,有些标签有相对的标签,例如:“/media/image/image.png”,然后我使用以下方法调整一些:
URI.join(url, relative_link_url).to_s
图片网址应为:
http://www.mp.rs.gov.br/media/imprensa/2013/01/30979_260_260__trytr.jpg
代替:
http://ow.ly/hh8ri/media/imprensa/2013/01/30979_260_260__trytr.jpg
编辑:想法
class Scraper < Nokogiri::HTML::Document
attr_accessor :url
class << self
def new(url)
html = open(url, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE)
self.parse(html).tap do |d|
url = URI.parse(url)
response = Net::HTTP.new(url.host, url.port)
head = response.start do |r|
r.head url.path
end
d.url = head['location']
end
end
end
end