1

Facebook のような、Twitter のシェア、Google の 1+ カウントをどのように取得しますか?

たとえば現在 78 件のいいね、158 件のツイート、21 件の 1+ があります。

nokogiri でページのソースをスクレイピングしてみましたが、問題はページの読み込み後にこれらのものが読み込まれることです。

ルビーを使用してこれらの共有の数を取得する方法はありますか?

4

1 に答える 1

2

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
于 2013-11-01T07:35:50.040 に答える