gpt4 book ai didi

ruby - open-uri + hpricot 和 nokogiri 不能正确解析 html

转载 作者:数据小太阳 更新时间:2023-10-29 08:19:24 24 4
gpt4 key购买 nike

我正在尝试使用 open-uri + hpricot 解析网页,但它似乎是解析过程中的一个问题,因为 gems 没有给我带来我想要的东西。

具体来说,我想在这个 url 中获取这个 div(其 id 是 'pasajes'):

http://www.despegar.com.ar

我写这段代码:

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 中尝试了很多东西:

  1. 我尝试给出该​​ div 的绝对路径
  2. 我尝试使用 CSS 路径选择器
  3. 我尝试使用 hpricot 搜索快捷方式 (doc//"div#pasajes")
  4. 几乎所有可能的相对路径都可以到达“pasajes”div

最后我找到了一个糟糕的解决方案。我使用了 watir 库,打开网络浏览器后,我将 html 传递给 hpricot。通过这种方式,hpricot 可以识别“pasajes”div。但我不想仅仅为了解析目的而打开一个网络浏览器......

我做错了什么? open-uri 工作不好吗?是 hpricot 吗?

最佳答案

静态 HTML 页面中没有 ID 为 pasajes 的 DIV。如果您正在运行 *nix,您可以通过执行以下操作来查看:

curl http://www.despegar.com.ar/ | grep pasajes

我猜它是由 JavaScript 生成的。

如果您使用的是 MacRuby,您可以尝试 Lyndon .

关于ruby - open-uri + hpricot 和 nokogiri 不能正确解析 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1357740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com