【问题标题】:Nokogiri returning variable name instead of actual data on website?Nokogiri 返回变量名而不是网站上的实际数据?
【发布时间】:2020-10-21 07:08:14
【问题描述】:

我正在从网站获取数据。我需要在 h1 标签中获取文本。当我检查元素时,在那个 h1 标签内有一个文本。但是当我使用 Nokogiri 获取时,该 h1 标记中有一个变量名。

content = open('https://example.com').read
html = Nokogiri::HTML(content)
html.css('h1#egift-refresh-online-number-desktop').text

当我在 chrome 中检查时发现

但是当我查看那个页面的来源时,我看到了

我需要提取实际值而不是变量名。我怎么能用 Nokogiri 做到这一点?有什么方法可以做到吗?

【问题讨论】:

  • 一切看起来都不错。您能否提供您尝试阅读该网站的网址?

标签: ruby-on-rails ruby web-scraping nokogiri


【解决方案1】:

Nokogiri 只是一个简单的 XML/HTML 解析器,并不适合这项工作。

您获取的内容看起来像 Handlebars 模板(或其众多分支之一),{{ ecardDetails.cardCardnumber }} 只是 HTML 文件中的一个占位符,可能在执行 AJAX 请求后被 JavaScript 替换为实际数据。

Nokogiri 不执行 JavaScript,因为它不是浏览器。

Capybara 是一种 DSL,主要用于验收测试,当与正确的驱动程序(如 selenium 或 webkit)一起使用时,可以自动化浏览器,从而抓取依赖 JavaScript 的页面。

【讨论】:

  • 借助 gems capybara、selenium-webdriver、webdrivers,我使用 headless chrome 获取数据并获得了实际数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-17
  • 1970-01-01
相关资源
最近更新 更多