使用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. 基于两个条件去除元素
如果你正在清理一个文件,删除整个机构,创建一个新文件可能是有意义的,只能复制旧文件的'
'。这样做是同一枚硬币的另一面。 –