2011-03-10 64 views
0

我不确定我的问题的名称。我有一个使用nokogiri的HTML页面。现在我想从该页面中删除一些标签。将html转换为字符串后,我尝试使用ruby的删除方法 - 虽然它删除了我输入的所有字母。我得到的最好结果是使用.gsub('<stuff>', '')虽然它仍然留下一些空间。是否有可能实际切割一个字符串的东西?具体的pharses? 另一个问题 - 我可以删除空格吗?如何从红宝石中的字符串中删除短语?

是我迄今所做的:

doc = Nokogiri::HTML(open("http://www.example.com/")) 
tester = doc.css(".example").to_s.gsub('<div class="example">', '') 
+0

意思短语。对不起,拼写错误。 – Ariel 2011-03-10 21:28:40

+1

你能否给出一些简单的实际输入和输出数据,这可以解释你想在这里实现什么东西? – Dogbert 2011-03-10 21:46:31

+0

如果你需要帮助,请做Dogbert说的话。你的问题还不够清楚。 – Phrogz 2011-03-13 18:42:15

回答

1

我建议尝试在XML树水平,而不是字符串编辑做到这一点。 我认为nokogiri api为你提供了一些工具。

另一种方法可能是使用css或xpath选择想要的数据,而不是删除不需要的部分?

还有字符串中的标准化空间的XPath功能,有一个例子in this question

一些引入nokogiri帮助:

+0

如何在xml树级别执行此操作?我真的很想明白,并且我真的没有得到nokigiri的xml api ... – Ariel 2011-03-10 21:32:03

+0

它给了你一个节点集,然后你像树一样导航。我添加了一些教程链接到答案。这个API可能会很棘手,但是花一些时间来玩它(在IRB中),如果你再次使用Ruby或XML解析Ruby(以及其他许多库在后台使用它),你会发现它非常有用。 – nruth 2011-03-10 21:37:04

+0

+1用于处理XML树。如果你开始在XML/HTML中使用正则表达式,你会遇到很多麻烦。Nokogiri知道的非常重要,它在任何语言中几乎都是用于遍历/替换标签的。 – 2011-03-10 21:51:34

1

查看Nokogiri的教程。特别是,你想读"Modifying an HTML/XML Document", Changing text contents

Nokogiri的XML访问器非常友好,因为您不需要使用XPath。你也可以使用CSS访问器,对于那些不是XML的人来说,他们可以帮助很多。

在该特定示例中,他们使用at_css方法,该方法搜索目标的第一个匹配项。您有许多替代方法,它们是同义词:at,%,at_cssat_xpath处理“找到第一个”的情况。 search,css,xpath, /类似地处理“查找所有事件”。

例如:

require 'nokogiri' 

html = '<h1>Snap, Crackle and Pop</h1>' 

doc = Nokogiri::HTML(html) 
h1 = doc.at('h1') 
h1.content = h1.content[0, h1.content.length - 3] + '...' 

puts doc.to_html 

>> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 
>> <html><body><h1>Snap, Crackle and ...</h1></body></html> 

这创造了一个引入nokogiri新的HTML文档,搜索第一H1,并修剪后的3个字符的内容,以省略号代替它们。