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

标签 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>

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

“这就是我要抓取的,我也想抓取这段文字”

执行此操作的最佳方法是什么?

干杯

头皮

最佳答案

您可以使用 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")

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

关于html - Hpricot,从文档中获取所有文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1243817/

相关文章:

html - 如何使用 html 和 css 将 SubMenu 添加到垂直子菜单

php - 在html页面中调用PHP

html - 将图像背景添加到 svg 区域

ruby-on-rails - 在深度嵌套对象模型中处理 nils 的技术

mysql - 为什么 ruby​​ 检测不到无效编码而 mysql 检测到?

arrays - 计数相等运算符

ruby - 如何在 Nokogiri 中使用正则表达式搜索匹配特定开头的文本?

Python Flask - 单击按钮时更改模板

html - 使用 Ruby 从登录可访问网页后 javascript 中提取值

ruby - open-uri 没有将 http 重定向到 https