你将如何获得 facebook like、twitter share 和 google 1+ 计数?
例如,目前有 78 个赞、158 个推文和 21 个 1+ 。
我尝试 nokogiri 来抓取页面的源,但问题是这些东西在页面加载后被加载。
知道如何使用 ruby 获得这些股票的计数吗?
您应该使用可以处理 Javascript 的库。
例如,以下是使用selenium-webdriver的解决方案:
require 'selenium-webdriver'
url = 'http://www.theverge.com/2013/10/31/5051682/' +
'googles-next-generation-nexus-5-android-4-4-kitkat-and-more'
frame_count_selectors = [
['likes', '.fb_iframe_widget iframe', '.pluginCountTextDisconnected'],
['tweets', 'iframe.twitter-tweet-button', '#count'],
['+1s', '#___plusone_0 iframe', '#aggregateCount'],
]
driver = Selenium::WebDriver.for :firefox # :chrome / :phantomjs / ...
driver.get(url)
frame_count_selectors.each do |name, frame_sel, count_sel|
driver.switch_to.default_content
frame = driver.find_element(:css, frame_sel)
driver.switch_to.frame frame
count = driver.find_element(:css, count_sel).text
puts "#{count} #{name}"
end
driver.quit
输出示例:
82 likes
160 tweets
21 +1s