如何检查页面的哪一部分是文章?

时间:2012-06-28 13:45:18

标签: javascript ruby web-scraping

我想为Instapaper或Readability创建一个类似的工具,我想知道从网页中查找和获取文本的最佳方法是什么。你有什么想法吗?

2 个答案:

答案 0 :(得分:1)

问题太广泛而无法给出具体答案,但您可以将此问题分为三个问题:

  1. 一种获取网络资源的方法。例如libcurl,或者只是能说话的任何内容HTTP

  2. DOM解析器。例如,Python有xml.dom.minidom

  3. 用于遍历DOM树并提取文本的算法。无论是使用class=article扫描元素,还是扫描超过1024个字符等的<div>,完全取决于您。你需要进行实验才能做到这一点。

  4. 我建议针对这些问题提出单独的问题。当然,在对每个人进行研究之后。 :)

答案 1 :(得分:1)

这是一个让你开始使用Ruby的想法。刚刚测试了下面的代码,它对我来说很好。看看它可能对你有帮助。

require 'open-uri'    
require 'cgi'    
require 'nokogiri'

$url='http://www.stackoverflow.com'

$txt_file = open($url)   

$raw_contents = $txt_file.read

$html = Nokogiri::HTML(CGI.unescapeHTML($raw_contents)).content
#strip the web page fetched out of all hmtl tags and encoded chars

$txt_file = File.new('c:\ruby193\bin\web-content\stack.txt', "w")
#stack.txt now contains a stripped, pure txt file which you can manipulate further

$txt_file.write($html)    
$txt_file.close

puts 'Here is the stripped text of your webpage\n'+$html