使用Nokogiri,我將如何移除一切直至幷包括HTML文檔的body元素?還有關閉的身體元素和一切之後?使用Nokogiri去除元素
0
A
回答
3
最簡單的方法(當然,恕我直言)是使用XPath來提取<body>
元素:
html = '<html><head><title>xxx</title></head><body><p>dsfkj</p><p><b>sdff</b> dsfsdf</p></body></html>'
doc = Nokogiri::HTML(html)
body = doc.xpath('//body')
現在你剛纔在body
的<body>
元素(及其子女)。然後,獲得HTML:
body_html = body.to_s
# "<body>\n<p>dsfkj</p>\n<p><b>sdff</b> dsfsdf</p>\n</body>"
關鍵是要提取您想要的東西,而不是試圖扔掉你不想要的東西。最終的結果是一樣的,但找到一件你想要的東西比找到一堆你不想要的東西更容易,當你有一個查詢語言在你的處置。
+0
這太簡單了我不敢相信我沒有想到它!謝謝! –
+1
@邁克爾:在一兩分鐘內,一羣新的眼睛能夠理清你的問題時,試圖強制它工作的時間很難被鎖定在錯誤的方法和浪費時間。在那裏,做到這一點,甚至沒有得到一件蹩腳的T恤。 –
+2
而不是使用'to_s'來獲取HTML,請使用'to_html'。它更自我記錄。另外,在使用HTML時,我使用CSS訪問器而不是XPath,'at'返回一個節點而不是'xpath',它返回一個NodeSet,用於顯式查找單個標籤,例如'
'或'' ,所以'body = doc.at('body')'和'body_html = body.to_html'。 –相關問題
- 1. 如何使用Nokogiri去除節點?
- 2. 在紅寶石中使用正則表達式去除Nokogiri元素
- 3. 如何使用HTML DOM去除元素?
- 4. 使用greasemonkey去除和摺疊元素
- 5. RxSwift - Observable去除使用過的元素
- 6. 使用javascript/closure去除附加元素?
- 7. 使用javascript去除子元素
- 8. 使用AngularJS去除DOM元素
- 9. 嘗試使用javascript去除子元素html元素
- 10. 使用Nokogiri和Ruby命名元素「text」
- 11. 使用Nokogiri訪問嵌套元素
- 12. 用Jsoup去除元素不起作用
- 13. 如何用javascript去除dom元素?
- 14. 如何用jq去除數組元素?
- 15. 訪問Nokogiri元素子元素
- 16. 颳去每個父元素的最後一個錨href(使用紅寶石Nokogiri)
- 17. 爲什麼Nokogiri去除內容?
- 18. 與nokogiri合併xml元素
- 19. 用Nokogiri從元素中移除外部標籤?
- 20. 使用jQuery元素添加刪除元素使用html元素
- 21. 用nokogiri解析javascript函數元素
- 22. 使用引入nokogiri使用多個搜索元素
- 23. Nokogiri失去屬性
- 24. 去除元素的最佳集合
- 25. 如何根據條件去除元素?
- 26. 紅黑樹 - 無dummys元素去除
- 27. JQuery的 - 除去中間元素
- 28. 防止「綁定」去除DOM元素(Knockout.js)
- 29. Jsoup清潔劑不去除元素
- 30. 基於兩個條件去除元素
如果你正在清理一個文件,刪除整個機構,創建一個新文件可能是有意義的,只能複製舊文件的'
'。這樣做是同一枚硬幣的另一面。 –