如何解析表中的文檔並將其作爲JSON文件發送到另一個數據庫。解析表中的文檔
描述: 我已經使用海葵爬網並將數據從網站中提取到表格中。我現在需要解析它並將其作爲JSON文件傳輸到另一臺服務器。我想,我將不得不首先將表中的文檔轉換爲可以解析並轉換爲json文件的nokogiri文檔。任何想法如何將文檔轉換成nokogiri文檔,或者如果任何人有任何其他想法來解析它並將其作爲json文件發送?
如何解析表中的文檔並將其作爲JSON文件發送到另一個數據庫。解析表中的文檔
描述: 我已經使用海葵爬網並將數據從網站中提取到表格中。我現在需要解析它並將其作爲JSON文件傳輸到另一臺服務器。我想,我將不得不首先將表中的文檔轉換爲可以解析並轉換爲json文件的nokogiri文檔。任何想法如何將文檔轉換成nokogiri文檔,或者如果任何人有任何其他想法來解析它並將其作爲json文件發送?
好吧我很早就找到了答案,我基本上利用REST將消息從一個應用程序發送到另一個應用程序,我把它作爲一個散列發送出去。而顯而易見的,我用nokogiri來解析表格。
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
}
一個簡單的解析示例和我如何形成我的哈希。
Nokogiri是HTML解析的最佳選擇,但是爲了將其轉換爲JSON,您可以根據自己的情況自行決定。
一旦你通過Nokogiri解析它,它不應該非常難以提取你需要的元素並生成代表它們的JSON。你所做的並不是一件很常見的事情,所以你必須彌合Nokogiri和你用來生成JSON的任何寶石之間的差距。
謝謝eric。如何在表格中的文檔上使用nokogiri。我有一個結果表,我在存儲HTML頁面。現在我需要解析它。任何幫助,我該怎麼做。 – noobie
@noobie:我認爲你的意思是一個HTML表格?你應該看看xpath,這是一種簡單的(有點通用的)語法,用於從DOM樹中選擇元素。您可以使用Nokogiri附帶的xpath函數來獲取特定的元素。一個與表格相關的例子就是抓住所有的行。這個xpath語法是:'// table [@ id =「foo」]/tr'。希望有所幫助! –
爲什麼要將HTML頁面表示爲JSON? –
因爲我將它存儲在一個不同的rails應用程序庫中。這不是一個html頁面。我將通過解析的文檔作爲JSON而不是整個HTML文檔。 – noobie
那麼你在尋找比http://www.google.com/search?q=nokogiri+tutorial更多的東西嗎?如果是這樣,你到底在找什麼? –