我正在尝试使用 open-uri + hpricot 解析网页,但这似乎是解析过程中的一个问题,因为宝石没有给我带来我想要的东西。
具体来说,我想在此 url中获取此div(其 id 为'pasajes' ):
我写了这段代码:
require 'nokogiri'
require 'hpricot'
require 'open-uri'
document = Hpricot(open('http://www.despegar.com.ar/')) # WITH HPRICOT
document2 = Nokogiri::HTML(open('http://www.despegar.com.ar/')) # WITH NOKOGIRI
pasajes = document.search("//div[@id='pasajes']")
pasajes2 = document2.xpath("//div[@id='pasajes']")
但它什么也没带来!我在 hpricot 和 nokogiri 中尝试了很多东西:
- 我尝试给出该 div 的绝对路径
- 我尝试使用选择器的 CSS 路径
- 我尝试使用 hpricot 搜索快捷方式(doc//“div#pasajes”)
- 几乎所有可能的相对路径都可以到达“pasajes”div
最后我找到了一个可怕的解决方案。我使用了 watir 库,打开网络浏览器后,我将 html 传递给了 hpricot。以这种方式 hpricot 可以识别 'pasajes' div。但我不想仅仅为了解析目的而打开一个网络浏览器......
我做错了什么?open-uri 工作不好吗?是杏吗?