我想要从HTML页面中删除所有不满足特定条件(class = "int“或class = "ext")的图像(实际上是tinymce用户输入),并且我正在努力使用正确的方法。这就是我到目前为止正在做的事情:
hbody = Hpricot(input)
@internal_images = hbody.search("//img[@class='int']")
@external_images = hbody.search("//img[@class='ext']")但我不知道如何找到类的值错误的图像(不是"int“或"ext")。
我还必须遍历元素以检查非标准html的其他属性(我使用它们来设置内部值,如在属性dbsrc中设置的DB id )。我也可以访问这些属性吗?当某些元素(在hpricot搜索结果中)不符合我的标准时,有没有办法删除它们?
谢谢你的帮忙!
发布于 2009-06-29 14:52:42
>> doc = Hpricot.parse('<html><img src="foo" class="int" /><img src="bar" bar="42" /><img src="foobar" class="int"></html>')
=> #<Hpricot::Doc {elem <html> {emptyelem <img class="int" src="foo">} {emptyelem <img src="bar" bar="42">} {emptyelem <img class="int" src="foobar">} </html>}>
>> doc.search("img")[1][:bar]
=> "42"
>> doc.search("img") - doc.search("img.int")
=> [{emptyelem img src"bar" bar"42"}]一旦你有了搜索结果,你就可以使用普通的数组操作了。非标准属性可以通过[]访问。
发布于 2009-06-29 15:02:45
查看not CSS selector。
(hbody."img:not(.int)")
(hbody."img:not(.ext)")不幸的是,看起来你不能连接not表达式。您可能希望获取所有img节点,并删除那些.css选择器既不包含.int也不包含.ext的节点。此外,可以使用difference运算符来计算哪些元素不是这两个集合的一部分。
使用.remove方法删除节点或元素:Hpricot Altering文档。
https://stackoverflow.com/questions/1058716
复制相似问题