我如何使用Ruby的消毒/引入nokogiri访问未标记的元素呢?

我试图建立一个消毒变压器接受带有任何标签之外的元素可言,如在这个例子中潜在的恶意HTML输入:

out of a tag<p>in a tag</p>out again!

我想有变压器包装在任何无标签元素<p>标记,这样上面的转变为:

<p>out of a tag</p><p>in a tag</p><p>out again!</p>

不幸的是,我想不出如何选择未标记的元素,因为它不是一个节点。 我敢肯定,我失去了一些东西在这里。 有人可以给我一个正确的方向轻推?

--------------解决方案-------------

require 'nokogiri'

html = 'out of a tag<p>in a tag</p>out again!'

Nokogiri::HTML(html).at_css('body').children.
map {|x| '<p>' + x.text + '</p>' }.join('')
#=> "<p>out of a tag</p><p>in a tag</p><p>out again!</p>"

文本存储在文本节点。 由于CSS不能选择文本节点,你将不得不使用其他的方法,让他们像Nokogiri::XML::Node#children

分类:红宝石 时间:2012-01-01 人气:0
分享到:

相关文章

  • 我怎么能刮网页时提取HTML转义字符/实体的文字? (红宝石与引入nokogiri) 2012-02-29

    在我的红宝石+机械化(引入nokogiri)脚本我使用这段代码: row.at_xpath('td[3]/div[1]/a/text()').to_s.strip 在论坛,帖子标题的HTML如下: <a href="showthread.php?t=233891" ></body> on Footer ?</a> 我从XPath的收到此字符串</body> on Footer ? </body> on Footer ? 我想获

  • 如何分析与红宝石/ HTML引入nokogiri源代码? 2012-09-01

    我已经成功地使用红宝石(1.8),并引入nokogiri的CSS解析从网页拔出前置数据. 但是我现在需要从一系列页面,其中数据是在网页的源代码中的"元"标签拉出一些数据. 一个我需要的线路如下: <meta name="geo.position" content="35.667459;139.706256" /> 我已经使用XPath放一直无法得到它的权利尝试. 任何帮助,需要什么语法,将不胜感激. 谢谢 --------------

  • 解析“第x页的1' - 最好的方法(红宝石/机械化/引入nokogiri) 2014-06-13

    有什么用红宝石最好的方法 /机械化/引入nokogiri去/点击在所有页面的情况下,有超过一页,我需要访问/点击? 例如在这里第1页共34我应该点击页码或下一个? 或者是出有没有更好的解决办法? --------------解决方案------------- 它看起来像链接">"带你到下一个页面,如果你是在最后一页上它不会出现. 所以: page = ... # fetch the first page loop do # process the page break unles

  • 红宝石 - 遍历引入nokogiri元 2014-12-01

    我有一个这样的HTML: ... <table> <tbody> ... <tr> <th> head </th> <td> td1 text<td> <td> td2 text<td> ... </tr> </tbody> <tfoot> </tfoot> </table> ... 我使用的引入nokogiri红宝石. 我想通过每一行遍历

  • 如何阅读nokogiri.org文档? (红宝石+机械化+引入nokogiri) 2012-08-11

    上周我开始写的Ruby脚本. 我需要从网上刮一些数据,所以我建议使用机械化,然后引入nokogiri. 机械化文件说, 使用机械化引入nokogiri解析HTML. 这是什么意思你? 你可以把一个机械化页面就像一个对象引入nokogiri. 在您使用机械化导航到你需要刮的页面,然后使用方法引入nokogiri刮. 我知道,我可以使用.xpath .at_xpath,因为它是一个回答我的问题的一部分,但我不知道这些方法的确切语法,差异等等.我试图寻找网页引入nokogiri. 有人告诉我,在这样的

  • 通过解析红宝石返回引入nokogiri了一定的成效,收到错误信息 2013-03-11

    下面的代码返回一个错误: require 'nokogiri' require 'open-uri' @doc = Nokogiri::HTML(open("http://www.amt.qc.ca/train/deux-montagnes/deux-montagnes.aspx")) #@doc = Nokogiri::HTML(File.open("deux-montagnes.html")) stations = @doc.xpath("//area

  • 红宝石解析引入nokogiri HTML表 2014-04-06

    我使用机械化/和引入nokogiri需要分析出以下HTML字符串. 谁能帮助我与XPath语法要​​做到这一点,或任何其他的,将工作的方法? <table> <tr class="darkRow"> <td> <span> <a href="?x=mSOWNEBYee31H0eV-V6JA0ZejXANJXLsttVxillWOFoykMg5U65P4x7FtTbsosKRbbBPuYvV8nPhET7b5sFeON4aW

  • 在网页红宝石,引入nokogiri和机械化的Java饼干链接解析 2012-03-14

    大家. 我需要解析其对每一个环节的Java饼干的网页. 我可以解析正常的搜索,每一个产品展示和导入到一个MySQL数据库. 我能够从搜索结果中每一个产品刮掉其使用此代码元素: 这是我有: require 'rubygems' require 'logger' require 'mechanize' require 'mysql2' agent = WWW::Mechanize.new{|a| a.log = Logger.new(STDERR) } #agent.set_proxy('a-pro

  • 我如何使用Ruby和引入nokogiri解析LI / DL / DD标签结构? 2012-09-10

    我试图解析包含的有序列表以及DL / DD标签HTML. 我们的目标是创建一个详细列举每个标签中加入一些属性的内容的XML结构. 在最终的效果扁平化结构(所需的输出将在问题结束时显示). 这里是(包含在的test.html在我的代码)存储在一个文件的HTML的例子: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.156 (s). 10 q(s)