我正在编写自己的文章,但我想知道是否有任何用Ruby编写的优秀网页抓取工具。
如果没有一个完整的网络抓取工具,任何可能有助于构建网络抓取工具的宝石都会很有用。我知道这个问题的这一部分在几个地方都有提及,但适用于构建网络爬虫的宝石列表也是一个很好的资源。
答案 0 :(得分:68)
我曾经为我的工作编写蜘蛛,页面抓取工具和网站分析器,并且还会定期编写它们来解决我得到的一些问题。
Ruby拥有一些优秀的宝石,可以轻松实现:
OpenURI作为一个简单的HTTP客户端很好,但是当你想要做更复杂的事情或者需要同时触发多个请求时,它可能会受到阻碍。我建议查看HTTPClient或Typhoeus with Hydra以获得适度和重量级的工作。 Curb也很好,因为它使用了cURL库,但界面对我来说并不直观。值得关注一下。 HTTPclient也值得一看,但我倾向于前面提到的那些。
注意:OpenURI有一些缺陷和漏洞可能会影响毫无戒心的程序员,所以它有点不受欢迎。 RestClient是一位非常有价值的继任者。
<a>
标记更多的工作。就此而言,Mechanize还具有links
方法,该方法返回页面中的所有链接,但您仍需要对其进行过滤以确定是要关注还是忽略它们。毕竟,你还要让你的代码知道正确的蜘蛛礼仪:What are the key considerations when creating a web crawler?
答案 1 :(得分:19)
我正在构建wombat,一个Ruby DSL来抓取网页并提取内容。在github上查看https://github.com/felipecsl/wombat
它仍处于早期阶段,但已经具备基本功能。很快就会添加更多东西。
答案 2 :(得分:5)
所以你想要一个好的基于Ruby的web crawler?
尝试spider或anemone。根据RubyGems下载计数,两者都有可靠的用法。
到目前为止,其他答案是详细和有用,但他们没有像激光一样关注这个问题,它要求为web提供ruby库的爬虫即可。看起来这种区别可能会变得混乱:见my answer to "Crawling vs. Web-Scraping?"
答案 3 :(得分:1)
Tin Man的全面list 很好,但对我来说已经过时了。
我的客户处理的大多数网站都依赖于AJAX / Javascript。 我也一直在使用Watir / watir-webdriver / selenium几年,但是在后端加载一个隐藏的Web浏览器来渲染DOM内容的开销是不可行的,更不用说所有这些了他们仍然没有实现一个可用的“浏览器会话重用”,让新代码执行重用内存中的旧浏览器来实现此目的,最终拍下可能最终在API层上运行的票证。 (参考https://code.google.com/p/selenium/issues/detail?id=18)**
https://rubygems.org/gems/phantomjs
是我们正在将新项目迁移到现在,以便在没有任何不可见的Xvfb内存和放大器的情况下渲染必要的数据。 CPU重型网络浏览器。
**替代方法也未能成功:
答案 4 :(得分:0)
如果您不想自己编写,请使用任何普通的网络爬虫。那里有几十个。
如果你想写自己的,那就写自己的。网络爬虫不是一个复杂的活动,它包括:
哦,这似乎与“Web crawler in ruby”重复。