2009-10-23 225 views
5

タイトルによると、私はいくつかのDOM操作タスクを持っています。たとえば、私はしたい: - 青色を持つすべてのH1要素を見つける。 - サイズが12pxのすべてのテキストを検索します。 など -Ruby on RailsでDOMを操作する方法

Railsでどうすればいいですか?

は...ありがとう:)

更新

私はこのペーパー - に基づいてWebページのコンテンツを抽出することに関するいくつかの研究を行ってきた>http://www.springerlink.com/index/A65708XMUR9KN9EA.pdf

ステップの概要は次のとおりです。

  1. 私が抽出したいウェブURLを取得する(単一のウェブページ)
  2. は、いくつかの視覚的なルールに基づいてWebページからいくつかの要素をつかむ:私のアルゴリズム
  3. を持つ要素が私のデータベースに結果を保存
  4. プロセス(例は青色を持っているすべてのH1をつかみます)。

Webページ上の任意の要素である、あなたは正確にアカウントのスタイルシートに取るために、ブラウザ(、マークアップハックをリバースエンジニアリングする必要があるだろう何色私の悪い英語 -

+0

あなたがあなたの問題のために、私はより具体的なアドバイスを提供できるように、(あなたが何をしているか)を達成しようとしているものに拡張していただけますか?ありがとう。 –

+0

あなたの最新情報に基づいて、あなたの質問を次のように変更することをお勧めします: "Rubyで視覚的基準に基づいてHTML文書を解析する方法" –

答えて

1

確実に整理するためには-sorry、壊れたタグ、画像など)。

従来のブラウザ(geckoなど)を独自のアプリケーションに埋め込むのはずっと簡単です。

あなたのスパイダーはページをブラウズするので、埋め込まれたgeckoのインスタンスにそれらを渡します。ここでgetComputedStyleを使用して個々の要素の色を取得できます。

このプロジェクトではRuby on Railsを使いたいと言いましたが、Railsはプレゼンテーションアプリケーションを書くためのフレームワークであり、実際にはこのようなプロジェクトにはあまり適していません。

開始点として、私はRubyGnome、特にRubyGnomeのGtk::MozEmbed機能をチェックアウトすることをお勧めします。

+0

ありがとう、Mike。 CSSプロパティでも動作しますか? 例:青色のH1のみを選択したいとします。 – andrisetiawan

+0

これはOPが望むものではありません。彼は、JavaScriptではなく、サーバー側ですべての処理を実行したいと考えています。 –

+0

彼のアップデートの前に自分の答えを投稿しました(クライアント側のソリューションが必要だったと思われたとき)。 –

8

あなたがしようとしているのは、レールアプリケーション内のHTMLドキュメントを操作する場合は、Nokogiriを見てください。

XPathを使用してドキュメントを検索します。以下では、ドキュメント内に「青い」CSSクラスを持つh1が見つかります。あなたが何をしようとしていたことは確かに現在のページのDOMを解析した場合、あなたはJavaScriptとjQueryのを見てみる必要があり、後

require 'nokogiri' 
require 'open-uri' 

doc = Nokogiri::HTML(open('http://www.stackoverflow.com')) 
doc.xpath('//h1/a[@class="blue"]').each do |link| 
    puts link.content 
end 

。 Railsはそれを行うことはできません。

+0

これは私のアプローチでもありましたが、その論文の概要を読むと、彼はCSSクラス "青"を求めていませんが、CSSとマークアップスキームが違う複数のサイトに色が青色で表示されます。 –

関連する問題