14

私は、Web ページからデータを引き出す簡単な方法について、rubyforge の XML および HTML ライブラリーを調べてきました。たとえば、stackoverflow でユーザー ページを解析したい場合、どうすればデータを使用可能な形式に変換できますか?

自分のユーザー ページを解析して、現在の評判スコアとバッジ リストを取得したいとします。ユーザー ページから取得したソースを xml に変換しようとしましたが、div がないために変換に失敗しました。文字列を比較して探しているテキストを見つけることができることはわかっていますが、これを行うにはもっと良い方法が必要です。

これを、コマンド ラインでユーザー データを吐き出す単純なスクリプトに組み込み、場合によってはそれを GUI アプリケーションに拡張したいと考えています。

4

6 に答える 6

18

残念ながら、stackoverflow は XML であると主張していますが、実際にはそうではありません。 ただし、 Hpricotは、このタグ スープを要素のツリーに解析できます。

require 'hpricot'
require 'open-uri'

doc = Hpricot(open("http://stackoverflow.com/users/19990/armin-ronacher"))
reputation = (doc / "td.summaryinfo div.summarycount").text.gsub(/[^\d]+/, "").to_i

などなど。

于 2008-09-26T03:41:45.013 に答える
5

プリコット終了!

ノコギリを今すぐ使用してください。

于 2014-01-30T14:32:45.497 に答える
5

hpricotを試してみてください。

画面のスクレイピングに数回使用しました。

于 2008-09-26T03:35:19.817 に答える
0

以前にこれを行おうとして遭遇したことは、整形式の XML 文書である Web ページはほとんどないということです。Hpricot はそれを処理できるかもしれません (私は使用していません) が、過去に同様のプロジェクトを行っていたとき (Python とそのライブラリに組み込まれた解析関数を使用)、プリプロセッサを使用してクリーンアップするのに役立ちました。 HTML。HTML Tidyの python バインディングをこれとして使用したところ、作業がずっと楽になりました。Ruby バインディングはここにありますが、まだ試していません。

幸運を!

于 2008-09-27T19:59:44.613 に答える
0

Ilya Grigorik が書いていることはいつも本当に好きです。彼は hpricot の使用について素晴らしい記事を書いています。

しばらく前にこの投稿も読みましたが、役に立ちそうです。

どちらも自分でやったことがないので、YMMV ですが、これらはかなり便利なようです。

于 2008-09-27T17:33:29.813 に答える