プログラミング初心者です。
###前提・実現したいこと
Nokogiriで「はてなブックマーク」一覧ページから各ブックマークの情報を参照したい。
処理したいブックマークページの一例
http://b.hatena.ne.jp/entry/s/www.ruby-lang.org/ja/
上記のような一覧ページから各ブックマークの情報を取り出したいです。
###該当のソースコード
require 'open-uri' require 'nokogiri' #スクレイピング先のURL url = 'http://b.hatena.ne.jp/entry/s/www.ruby-lang.org/ja/' opt = {} opt['User-Agent'] = 'Opera/9.80 (Windows NT 5.1; U; ja) Presto/2.7.62 Version/11.01 ' charset = nil html = open(url,opt) do |f| charset = f.charset f.read end doc = Nokogiri::HTML.parse(html, nil, charset) #xpath指定 doc.xpath('//*[@id="all-bookmarks"]/*[@id="public-bookmarks"]/*[@id="remaining-all-bookmarks"]/ul').each do |node| puts node.css('li').size end
###試したこと、発生している問題
各ブックマークデータは、
- $x('//[@id="all-bookmarks"]/[@id="public-bookmarks"]/ul')に上位30個
- $x(''//[@id="all-bookmarks"]/[@id="public-bookmarks"]/*[@id="remaining-all-bookmarks"]/ul')に残りすべて
が格納されているようです。
これらを上記コードに入れてみたとき、1)の30個は出てくるのですが、2)が出てきません。
どうすれば全てのブックマークを取得できるでしょうか?
###補足
Ruby2.3.0
はてなAPIでブックマーク情報は取得できますが、APIではブックマークについたスターの数などまでは取得できないのであくまでスクレイピングで行いたいです。
###追記
どうも無限スクロールページでのスクレイピングの問題のようです。
少し調べたらとちょっと難しそうなのでやっぱりAPIから攻めたほうがいいのかなとも思っています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/14 04:23