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 にアクセスできるかどうかを知りたいです。誰かが回避策を知っていますか?
ところで、私は<img>
タグを見つけるために HTML をトラバースしており、一部には "/media/image/image.png" のような相対タグが含まれているため、完全な URL が必要です。
URI.join(url, relative_link_url).to_s
画像の URL は次のとおりです。
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