programing

Nokogiri로 노드를 제거하려면 어떻게해야합니까?

nicescript 2021. 1. 15. 07:51
반응형

Nokogiri로 노드를 제거하려면 어떻게해야합니까?


<img>Nokogiri를 사용하여 태그를 제거하려면 어떻게 해야합니까?

다음 코드가 있지만 작동하지 않습니다.

# str = '<img src="canadascapital.gc.ca/data/2/rec_imgs/5005_Pepsi_H1NB.gif"/…; testt<a href="#">test</a>tfbu' 

f = Nokogiri::XML.fragment(str)
f.search('//img').each do |node| 
  node.remove
end
puts f

시도해보세요!

f = Nokogiri::XML.fragment(str)

f.search('.//img').remove
puts f

나는 일반적으로 훨씬 더 읽기 쉬운 XPath보다 CSS를 선호합니다. CSS로 전환 :

require 'nokogiri'

doc = Nokogiri::HTML('<html><body><img src="foo"><img src="bar"></body></html>')

구문 분석 후 문서는 다음과 같습니다.

doc.to_html
# => "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body>\n<img src=\"foo\"><img src=\"bar\">\n</body></html>\n"

<img>태그 제거 :

doc.search('img').each do |src|
  src.remove
end

결과 :

doc.to_html
# => "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body></body></html>\n"

참조 URL : https://stackoverflow.com/questions/1708504/how-do-i-remove-a-node-with-nokogiri

반응형