簡體   English   中英

Hpricot,從文檔中獲取所有文本

[英]Hpricot, Get all text from document

我剛開始學習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>

我基本上只想抓取文本,所以最終得到一個像這樣的字符串:

“這就是我想要抓住的。我也想抓住這個文字”

這樣做的最佳方法是什么?

干杯

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")

然而,這是一個相當昂貴的操作。 可能有更好的解決方案。

您可能想嘗試inner_text。

像這樣:

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

@weppos:這會更好一點:

text = doc/"//p|div/text()" # array of text values

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM