2011-03-10 62 views
0

我不確定我的問題的名稱。我有一個使用nokogiri的HTML頁面。現在我想從該頁面中刪除一些標籤。將html轉換爲字符串後,我嘗試使用ruby的刪除方法 - 雖然它刪除了我輸入的所有字母。我得到的最好結果是使用.gsub('<stuff>', '')雖然它仍然留下一些空間。是否有可能實際切割一個字符串的東西?具體的pharses? 另一個問題 - 我可以刪除空格嗎?如何從紅寶石中的字符串中刪除短語?

是我迄今所做的:

doc = Nokogiri::HTML(open("http://www.example.com/")) 
tester = doc.css(".example").to_s.gsub('<div class="example">', '') 
+0

意思短語。對不起,拼寫錯誤。 – Ariel 2011-03-10 21:28:40

+1

你能否給出一些簡單的實際輸入和輸出數據,這可以解釋你想在這裏實現什麼東西? – Dogbert 2011-03-10 21:46:31

+0

如果你需要幫助,請做Dogbert說的話。你的問題還不夠清楚。 – Phrogz 2011-03-13 18:42:15

回答

1

我建議嘗試在XML樹水平,而不是字符串編輯做到這一點。 我認爲nokogiri api爲你提供了一些工具。

另一種方法可能是使用css或xpath選擇想要的數據,而不是刪除不需要的部分?

還有字符串中的標準化空間的XPath功能,有一個例子in this question

一些引入nokogiri幫助:

+0

如何在xml樹級別執行此操作?我真的很想明白,並且我真的沒有得到nokigiri的xml api ... – Ariel 2011-03-10 21:32:03

+0

它給了你一個節點集,然後你像樹一樣導航。我添加了一些教程鏈接到答案。這個API可能會很棘手,但是花一些時間來玩它(在IRB中),如果你再次使用Ruby或XML解析Ruby(以及其他許多庫在後臺使用它),你會發現它非常有用。 – nruth 2011-03-10 21:37:04

+0

+1用於處理XML樹。如果你開始在XML/HTML中使用正則表達式,你會遇到很多麻煩。Nokogiri知道的非常重要,它在任何語言中幾乎都是用於遍歷/替換標籤的。 – 2011-03-10 21:51:34

1

查看Nokogiri的教程。特別是,你想讀"Modifying an HTML/XML Document", Changing text contents

Nokogiri的XML訪問器非常友好,因爲您不需要使用XPath。你也可以使用CSS訪問器,對於那些不是XML的人來說,他們可以幫助很多。

在該特定示例中,他們使用at_css方法,該方法搜索目標的第一個匹配項。您有許多替代方法,它們是同義詞:at,%,at_cssat_xpath處理「找到第一個」的情況。 search,css,xpath, /類似地處理「查找所有事件」。

例如:

require 'nokogiri' 

html = '<h1>Snap, Crackle and Pop</h1>' 

doc = Nokogiri::HTML(html) 
h1 = doc.at('h1') 
h1.content = h1.content[0, h1.content.length - 3] + '...' 

puts doc.to_html 

>> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 
>> <html><body><h1>Snap, Crackle and ...</h1></body></html> 

這創造了一個引入nokogiri新的HTML文檔,搜索第一H1,並修剪後的3個字符的內容,以省略號代替它們。