Hpricot,从文档中获取所有文本

Rai*_*Son 4 html ruby hpricot

我刚开始学习Ruby.非常酷的语言,喜欢它很多.

我正在使用非常方便的Hpricot HTML解析器.

我要做的是从页面中获取所有文本,不包括HTML标记.

例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title>Data Protection Checks</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <div>
        This is what I want to grab.
        </div>
        <p>
        I also want to grab this text
        </p>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我基本上只想抓取文本,所以最终得到一个像这样的字符串:

"这就是我想要抓住的.我也想抓住这个文字"

这样做的最佳方法是什么?

干杯

EEF

Sim*_*tti 10

您可以使用XPath text()选择器执行此操作.

require 'hpricot'
require 'open-uri'

doc  = open("http://stackoverflow.com/") { |f| Hpricot(f) }
text = (doc/"//*/text()") # array of text values
puts text.join("\n")
Run Code Online (Sandbox Code Playgroud)

然而,这是一个相当昂贵的操作.可能有更好的解决方案.