如何删除多个 <script> 标签中的选择性 <script> 标签?

How to remove selective <script> tag among multiple <script> tags?

我在一个网页上有多个 <script> 标签。我想从其中删除一些 <script> 标签。我如何使用 Nokogiri?

例如,我有五个 <script> 标签:

<script type="text/javascript" src="script file 1"></script>
<script type="text/javascript" src="script file 2"></script>
<script type="text/javascript" src="script file A"></script>
<script type="text/javascript" src="script file B"></script>
<script type="text/javascript" src="script file C"></script>

我只想删除 "script file 2""script file B"

你可以找到xpath and remove对应的节点:

doc.xpath("//script[@src='script file 2' or @src='script file B']").remove

使用 CSS 我可能会使用类似的东西:

require 'nokogiri'

doc = Nokogiri::HTML::DocumentFragment.parse(<<EOT)
<script type="text/javascript" src="script file 1"></script>
<script type="text/javascript" src="script file 2"></script>
<script type="text/javascript" src="script file A"></script>
<script type="text/javascript" src="script file B"></script>
<script type="text/javascript" src="script file C"></script>
EOT

doc.search('script').select { |script| script['src'][/file [2B]$/] }.map(&:remove)
puts doc.to_html

# >> <script type="text/javascript" src="script%20file%201"></script>
# >> 
# >> <script type="text/javascript" src="script%20file%20A"></script>
# >> 
# >> <script type="text/javascript" src="script%20file%20C"></script>