Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Hpricot元素交点_Ruby On Rails_Ruby_Parsing_Hpricot - Fatal编程技术网

Ruby on rails Hpricot元素交点

Ruby on rails Hpricot元素交点,ruby-on-rails,ruby,parsing,hpricot,Ruby On Rails,Ruby,Parsing,Hpricot,我想从一个HTML页面中删除所有不符合某些标准class=int或class=ext的图像,实际上就是用户输入的图像,我正在努力寻找正确的方法。这就是我目前正在做的: hbody = Hpricot(input) @internal_images = hbody.search("//img[@class='int']") @external_images = hbody.search("//img[@class='ext']") 但是我不知道如何找到类的值不是int或ext而是错误的图像 我还

我想从一个HTML页面中删除所有不符合某些标准class=int或class=ext的图像,实际上就是用户输入的图像,我正在努力寻找正确的方法。这就是我目前正在做的:

hbody = Hpricot(input)
@internal_images = hbody.search("//img[@class='int']")
@external_images = hbody.search("//img[@class='ext']")
但是我不知道如何找到类的值不是int或ext而是错误的图像

我还必须循环元素来检查其他非标准html的属性,我使用它们来设置内部值,比如我在属性dbsrc中设置的DB id。我是否也可以访问这些属性?如果hpricot搜索结果中的某些元素不符合我的条件,是否有方法删除这些元素

谢谢你的帮助

>> 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"}]
获得搜索结果后,可以使用常规数组操作。可通过[]访问非标准属性

获得搜索结果后,可以使用常规数组操作。可通过[]访问非标准属性。

查看

不幸的是,你似乎无法表达。您可能希望获取所有img节点,并删除那些.css选择器既不包含.int也不包含.ext的节点。 此外,您可以使用差分运算符来计算哪些元素不是这两个集合的一部分

使用.remove方法删除节点或元素:文档。

查看

不幸的是,你似乎无法表达。您可能希望获取所有img节点,并删除那些.css选择器既不包含.int也不包含.ext的节点。 此外,您可以使用差分运算符来计算哪些元素不是这两个集合的一部分


使用.remove方法删除节点或元素:文档。

wow,非常简单,因此我可以使用collection\u one-collection\u two从collection\u one中删除collection\u two中的所有元素?谢谢重要提示,在z=x-y之后,x不会改变,z将只包含所有不在y中的x。是的,和+以添加集合,例如,所有_图像-内部_图像+外部_图像。哇,非常简单,所以我可以使用集合_一-集合_二从集合_一中删除集合_二中的所有元素?谢谢重要提示,在z=x-y之后,x不会改变,z只包含y.yesp中没有的所有x,并且+添加集合,例如,all_images-internal_images+external_images。通过链接搜索,我最终可以实现我想要的:hbody.searchimg.search:not.int.search:not.ext返回类不为int和ext的所有图像。删除它们后,我可以检查其他属性,并基本上执行相同的操作。再次感谢!通过链接搜索,我最终可以实现我想要的:hbody.searchimg.search:not.int.search:not.ext返回类不为int和ext的所有图像。删除它们后,我可以检查其他属性,并基本上执行相同的操作。再次感谢!
(hbody."img:not(.int)")
(hbody."img:not(.ext)")