在Ruby中解析网页的最佳方法是什么?
时间:2020-03-06 14:45:50 来源:igfitidea点击:
我一直在寻找rubyforge上的XML和HTML库,以一种简单的方式将数据从网页中提取出来。例如,如果我想在stackoverflow上解析用户页面,如何将数据转换为可用格式?
假设我想解析自己的用户页面以获取当前的声誉得分和徽章列表。我试图将从用户页面检索到的源转换为xml,但是由于缺少div而导致转换失败。我知道我可以进行字符串比较并找到所需的文本,但是必须有一种更好的方法。
我想将其合并到一个简单的脚本中,该脚本在命令行中吐出我的用户数据,并可能将其扩展到GUI应用程序中。
解决方案
试试hpricot,它很好...很棒
我已经多次使用它进行屏幕抓取。
不幸的是,stackoverflow声称是XML,但实际上不是。但是,Hpricot可以为我们解析此标签汤到一棵元素树中。
require 'hpricot' require 'open-uri' doc = Hpricot(open("http://stackoverflow.com/users/19990/armin-ronacher")) reputation = (doc / "td.summaryinfo div.summarycount").text.gsub(/[^\d]+/, "").to_i
依此类推。
我一直很喜欢Ilya Grigorik的文章,他写了一篇有关使用hpricot的不错的文章。
不久前,我也阅读了这篇文章,它看起来对我们很有用。
我自己也没有做过,所以YMMV似乎很有用。
我之前尝试进行此操作的原因是,很少有网页是格式正确的XML文档。 Hpricot也许可以处理这个问题(我还没有使用过),但是当我过去做一个类似的项目(使用Python及其内置的解析函数库)时,它有助于一个预处理器来清理HTML。我使用HTML Tidy的python绑定是这样,它使工作变得更加轻松。 Ruby绑定在这里,但我还没有尝试过。
祝你好运!