2011-07-12 10 views
-1

テーブル内のドキュメントを解析し、JSONファイルとして別のデータベースに送信するにはどうすればよいですか。テーブル内のドキュメントの解析

詳細: 私は、アネモネを使用してウェブサイトからテーブルにデータをクロールして取り込みました。私は今それを解析し、別のサーバーにJSONファイルとして転送する必要があります。私はまずテーブルの文書をnokogiri文書に変換しなければならないでしょう。これは解析してjsonファイルに変換することができます。任意のアイデアをどのように私は文書をnokogiri文書に変換することができますか誰かがそれを解析し、jsonファイルとして送信する他のアイデアを持っている場合は?

+0

なぜHTMLページをJSONとして表現したいのですか? –

+0

私は別のレールアプリケーションであるリポジトリに格納しているためです。これはhtmlページではありません。私は解析されたドキュメントをJSONとして渡し、HTMLドキュメント全体を渡すことはありません。 – noobie

+0

http://www.google.com/search?q=nokogiri+tutorial以上のものをお探しですか?もしそうなら、あなたは何を探していますか? –

答えて

1

私は答えが長いことを発見しました。基本的には、メッセージフォームのアプリケーションを別のアプリケーションに送信するためにRESTを使用しました。ハッシュとして送信しました。明らかなのは、テーブルを解析するためにノコギリを使いました。

def post_me 
    @page_hash = page_to_hash 

    res = Net::HTTP.post_form(URI.parse('http://127.0.0.1:3007/element_data/save.json'),@page_hash) 
    end 

net/httpを使用してあるアプリケーションから別のアプリケーションにハッシュを送信する場合。

def page_to_hash 
    require 'rubygems' 
    require 'nokogiri' 
    require 'open-uri' 
    require 'domainatrix' 

    #page = self.page.sub(/^<!DOCTYPE html(.*)$/, '<!DOCTYPE html>') 
    hash={} 
    doc = Nokogiri::HTML(self.page) 
    doc.search('*').each do |n| 
     puts n.name 
    end 

私のモデルのページテーブルを解析するためにNokogiriを使用しています。ページテーブルはウェブページ全体を持っていました。

file_type = [] 

    file_type_data=doc.xpath('//a/@href[contains(. , ".pdf") or contains(. , ".doc") 
          or contains(. , ".xls") or contains(. , ".cvs") or contains(. , ".txt")]') 
    file_type_data.each do |href| 
     if href[1] == "/" 
     href = "http://" + website_url + href 
     end 
     file_type << href 
    end 
file_type_str = file_type.join(",") 
    hash ={:head => head,:title => title, :body => self.body, 
     :image => images_str, :file_type => file_type_str, :paragraph => para_str, :description => descr_str,:keyword => key_str, 
     :page_url=> self.url, :website_id=>self.parent_request_id, :website_url => website_url, 
     :depth => self.depth, :int_links => @int_links_arr, :ext_links => @ext_links_arr 
    } 

単純な解析の例と、私のハッシュの形成方法。

1

NokogiriはHTML解析には最高の賭けですが、JSONに変換するのはあなたが私が理解できるものからあなた自身です。

Nokogiriを使って解析したら、必要な要素を抽出してそれらを表すJSONを生成することは非常に難しいことではありません。あなたがやっていることはあまり一般的ではないので、NokogiriとJSONを生成するために使用している宝石のギャップを埋める必要があります。

+0

どのようにしてテーブルの文書にノコギリを使用できますか?私はHTMLページを格納している結果テーブルを持っています。今私はそれを解析する必要があります。どのように私はそれを行うことができます上の任意のヘルプ。 – noobie

+0

@noobie:私はそれをHTMLテーブルといいますか? DOMツリーから要素を選択するための簡単な(そして幾分普遍的な)構文であるxpathを見てください。 Nokogiriに含まれるxpath関数を使用して、特定の要素を取得することができます。テーブルに関連する例は、すべての行を取得することです。そのためのxpath構文は次のようになります: '// table [@ id = "foo"]/tr'。希望が助けてくれる! –

関連する問題