2014-11-06 88 views
1

是否有一种简单的方法来解析HTML页面以获取用户可见的文本? 我想摆脱所有标签,链接,JavaScript并返回页面上的文本内容。从网页上刮掉所有可见的文本

我只是想存储信息并稍后再回来,但在搜索中使用它。

尝试过引入nokogiri和水豚/鬼驱人

doc.css('body').text 

但是,让我的JavaScript的种种和垃圾,我不希望看到。

有没有一种方法可以去掉文本的位并将其批量转换为字符串,同时忽略所有'代码'?

+0

你想要的文字CSS和JavaScript之后有隐藏/移动文本的机会,还是希望在JavaScript和CSS未启用时显示的文本? – 2014-11-07 00:26:25

+0

只有在js没事的时候才会采取明显的文字。 找到了使用优雅简单地做工作的水豚的方法。 能够用Nokogiri/Mechanize做到这一点真的很有帮助。 – Carpela 2015-09-09 12:47:22

回答

1

其实很简单。

(在我的情况和PhantomJS,但我不认为它很重要)使用水豚

@session.visit url 
    # Grab the text from the page 
    @session.text 
    # Grab the page title 
    @session.title 

完全没有工作......

2

如果您想获取真实用户获取的文本,请模拟真实用户。一种方法是使用的Watir-webdriver的使用类似PhantomJS,例如:

require 'watir-webdriver' 

browser = Watir::Browser.new :phantomjs 
browser.goto 'https://google.com' 
puts browser.body.text 

当然,这个工作(PhantomJS是具体的),你需要下载相应的JS文件(PhantomJS Downloads)和将其放置在PATH中。

你得到所有这些的原因是Nokogiri并不像一个真正的用户那样工作,它只是对可能包含一堆嵌入式HTML的HTML文档进行刮擦和解析,等等。

0

我已使用Sanitize,效果不错。

Sanitize给你一个clean方法,它允许你指定configuration

您可以选择最适合您的情况的配置。

有一个democomparison可供您检查。