我想在我的 ruby 项目中使用 Nokogiri 抓取一些 html 页面。在爬虫页面中,有一些我也想抓取的链接。但问题是链接的 href 在 javascript 函数中。
<a href="javascript:nextPage('some text','','other text')">Click here</a>
如何使用Nokogiri加载此动态页面?
我得到了它与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
我建议使用Mechanize。
用法示例:
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