【问题标题】:How to load javascript function in href using Nokogiri如何使用 Nokogiri 在 href 中加载 javascript 函数
【发布时间】:2016-02-18 09:35:17
【问题描述】:

我想在我的 ruby​​ 项目中使用 Nokogiri 抓取一些 html 页面。在爬虫页面中,有一些我也想爬取的链接。但问题是链接的href在javascript函数中。

<a href="javascript:nextPage('some text','','other text')">Click here</a>

如何使用 Nokogiri 加载此动态页面?

【问题讨论】:

  • 欢迎来到 Stack Overflow。你试过什么?我们在这里帮助您修复代码,而不是为您编写代码。请阅读“How to Ask”和“minimal reproducible example”。我们需要最少的代码来复制问题、最少的输入和预期的输出。

标签: ruby nokogiri


【解决方案1】:

我建议使用机械化。

示例用法:

require 'mechanize'

mechanize = Mechanize.new

page = mechanize.get('http://en.wikipedia.org/wiki/Main_Page')

link = page.link_with(text: 'Random article')

page = link.click

puts page.uri

所以在这个例子中,只要知道链接的文本元素就足够了,这样你就会走上正确的轨道。

文档:http://readysteadycode.com/howto-scrape-websites-with-ruby-and-mechanize

【讨论】:

  • 非常感谢您的回复,尽管我正在使用 Nokogiri gem 搜索解决方案,因为我的整个项目都在使用 Nokogiri。
【解决方案2】:

我得到了它与 Nokogiri 的“无头”宝石一起使用。由于有很多 javascript 来加载页面,我使用这个

require 'headless'
 headless = Headless.new
 headless.start
 browser = Watir::Browser.start(main_page_url)
 if browser.link(text: "Click here").present?
    browser.link(text: "Click here").click
 end
 sleep(2.0) # delay to account for ajax-calls
 #finally close the browser
 browser.close

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 2020-03-06
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    相关资源
    最近更新 更多