Html Hpricot,从文档中获取所有文本
我刚刚开始学习Ruby。非常酷的语言,非常喜欢 我正在使用非常方便的Hpricot HTML解析器 我要做的是从页面中抓取所有文本,不包括HTML标记 例如:Html Hpricot,从文档中获取所有文本,html,ruby,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> <
<!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>
数据保护检查
这就是我想要的。
我也想抓住这段文字
我基本上只想抓取文本,因此我最终得到一个字符串,如下所示:
“这是我想要抓取的内容。我还想要抓取此文本”
这样做的最佳方法是什么
干杯
Eef您可以使用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")
然而,这是一个相当昂贵的操作。可能会有更好的解决方案。@weppos:这样会更好一些:
text = doc/"//p|div/text()" # array of text values
您可能需要尝试内部文本 像这样:
h = Hpricot("<html><body><a href='http://yoursite.com?utm=trackmeplease'>http://yoursite.com</a> is <strong>awesome</strong>")
puts h.inner_text
http://yoursite.com is awesome
h=Hpricot(“isawesome”)
将h.inner_放入文本
http://yoursite.com 太棒了
是的,但这假设他只想要p和div。我想他想要所有东西。@Eef,你可能需要在收集文本数组(doc/“script”)之前删除javascript代码。每个{js | js.inner_html='''}
。