Skip to content

Latest commit

 

History

History
287 lines (241 loc) · 22.6 KB

ruby.md

File metadata and controls

287 lines (241 loc) · 22.6 KB

Ruby 网页抓取

此列表包含与网页抓取和数据处理相关的 Ruby​​ 库。

网络请求工具

  • httparty 让 http 再次变得有趣!
  • http 用于发出 HTTP 请求的简单 Ruby DSL。
  • excon 适用于 Ruby 的可用、快速、简单的 HTTP(S) 1.1。
  • nestful 带有健全 API 的简单 Ruby HTTP/REST 客户端。
  • EM-HTTP-Request - 基于 EventMachine 的异步 HTTP 客户端。
  • excon - 可用、快速、简单的 Ruby HTTP 1.1。它作为通用 HTTP(s) 客户端工作得很好,特别适合在 API 客户端中使用。
  • Faraday - 一个 HTTP 客户端库,在许多适配器(例如 Net::HTTP)上提供通用接口,并在处理请求时包含 Rack 中间件的概念/响应周期。
  • Http Client - 在 Ruby 中提供类似于 libwww-perl (LWP) 的功能。
  • HTTP - HTTP Gem:用于发出 HTTP 请求的简单 Ruby DSL。
  • Http-2 - HTTP/2 协议的纯 Ruby 实现。
  • Patron - Patron 是一个基于 libcurl 的 Ruby HTTP 客户端库。
  • RESTClient - Ruby 的简单 HTTP 和 REST 客户端,灵感来自用于指定操作的微框架语法。
  • Savon - Savon 是 Ruby 编程语言的 SOAP 客户端。
  • Sawyer - HTTP 的秘密用户代理,建立在 Faraday 之上。
  • Spyke - 以类似 ActiveRecord 的方式与 REST 服务交互。
  • Typhoeus - Typhoeus 包装了 libcurl 以便发出快速可靠的请求。
  • Mechanize - Mechanize 是一个 ruby​​ 库,可以轻松实现自动化 Web 交互。

网页抓取框架

  • upton - 一个包含电池的框架,用于轻松进行网络抓取。
  • Wombat - 具有优雅 DSL 的 Web 抓取工具,可解析网页中的结构化数据。
  • Anemone - 网络蜘蛛框架,可以蜘蛛域并收集有关它访问的页面的有用信息。
  • Spidr - 多功能 Ruby 网络爬虫库,可以爬取一个站点、多个域、某些链接或无限。 Spidr 旨在快速且易于使用。
  • kimuraframework - 用 Ruby 编写的现代网络抓取框架,可与 Headless Chromium/Firefox、PhantomJS 或简单的 HTTP 请求一起使用,并允许抓取并与 JavaScript 交互呈现的网站。
  • arachnid2 一个简单、快速、无框架的爬虫,具有合理的默认值和许多选项。抓取页面并直接针对 Typhoeus 响应或 Watir 浏览器运行您的代码。

HTML/XML

  • nokogiri - 支持 XPath 和 CSS 选择器的 HTML、XML、SAX 和 Reader 解析器。
  • loofah - 基于 Nokogiri 的 HTML/XML 操作和清理。
  • HappyMapper - 允许您解析 XML 数据并将其快速轻松地转换为 ruby​​ 数据结构。
  • HTML::Pipeline - HTML 处理过滤器和实用程序。
  • Oga - 用 Ruby 编写的 XML/HTML 解析器。 Oga 不需要 libxml 等系统库,在各种平台上安装更容易、更快捷。
  • Ox - 一个快速的 XML 解析器和对象编组器。
  • ROXML - 使用注解样式类方法在 Ruby 和 XML 之间自定义映射和双向编组。
  • equivalent-xml - Nokogiri::XML 的 XML 文档等效性的简单测试。

文本处理

用于解析和操作纯文本的库。

  • 一般的
    • Kiba - 用于编写可靠、简洁、经过良好测试和可维护的数据处理代码的库。
    • diffy - 一种从两个字符串或文件生成差异的便捷方法。
    • CommonRegexRuby - 在一个字符串中查找很多种常见的信息。
  • 电话号码
    • GlobalPhone - 使用 Google 的 libphonenumber 数据库在 Ruby 中解析、验证和格式化电话号码。
  • 国家名称
    • i18n_data - 国家/语言名称和 2 字母代码对,85 种语言,用于国家/语言 i18n。
    • normalize_country - 将国家名称和代码转换为标准,包括 XML、CSV 和 DB 的转换程序。
  • 用户代理
    • 设备检测器 - 一个精确和快速的用户代理解析器和设备检测器,由最大和最新的用户代理数据库支持。
  • 通用解析器
    • Parslet - 一个小型 Rub​​y 库,用于以 PEG(解析表达式语法)方式构建解析器。
    • Treetop - PEG(解析表达式语法)解析器。
    • rley - Ruby gem 实现基于 Earley 算法的通用上下文无关语法解析器。
  • 约会时间
    • Chronic - 用纯 Ruby 编写的自然语言日期/时间解析器。
    • yymmdd - 用于惯用日期解析和格式化的微型 DSL。
    • Chronic Between - 用于日期和时间范围的简单 Ruby 自然语言解析器。
    • Chronic Duration - 一个简单的 Ruby 自然语言解析器,用于计算经过的时间。
    • Kronic - 一个用于解析和格式化人类可读日期的简单库。
    • Nickel - 从自然措辞的文本中提取日期、时间和消息信息。
    • Tickle - 用于重复事件的自然语言解析器
  • 人名
    • nameable - 一个 Ruby gem,提供人名的解析和输出,以及性别和种族匹配。
  • N-gram
    • N-Gram - Ruby 中的 N-Gram 生成器。
    • ngram - 将单词和短语分解成 ngram。
    • raingrams - 一个用 Ruby 编写的灵活且通用的 ngrams 库。
  • 文字相似度
    • FuzzyMatch - 基于字符串相似度和正则表达式规则。
    • fuzzy-string-match - ruby​​ 的模糊字符串匹配库。
    • FuzzyTools - 内存中 TF-IDF 模糊文档查找,带有针对不同记录链接数据集进行调整的精美默认标记器,便于开箱即用。
    • Going the Distance - 包含执行各种距离计算的脚本。
    • hotwater - 快速 Ruby FFI 字符串编辑距离算法。
    • levenshtein-ffi - 快速字符串编辑距离计算,使用 Damerau-Levenshtein 算法。
    • TF-IDF - 词频 - Ruby 中的逆文档频率。
    • tf-idf-similarity - 使用 tf*idf 计算文本之间的相似度。

特定格式处理

用于解析和处理特定文本格式的库。

  • 一般的
    • markup — 将 mardown、rst、creole 等转换为 HTML 的 GitHub 库。
  • 办公室
    • Yomu - 从文件和文档(.doc、.docx、.pages、.odt、.rtf、.pdf)中读取文本和元数据。
    • 电子表格 - 电子表格库旨在读取和写入电子表格文档。
    • roo - Roo 实现了所有电子表格类型的读取权限和 Google 电子表格的读取/写入权限。
    • google-spreadsheet-ruby - 这是一个读/写谷歌电子表格的库。
    • rubyXL - ruby​​XL 是一个允许解析、创建和操作 Microsoft Excel (.xlsx/.xlsm) 文档。
    • remote_table - 打开本地或远程 XLSX、XLS、ODS、CSV(逗号分隔)、TSV(制表符分隔)、其他定界、固定宽度文件和 Google 文档。
    • sheets - 以原生 ruby​​ 格式轻松处理电子表格。
    • 工作簿 - 工作簿包含工作簿,就像在表格中一样,包含行、包含单元格、读取/写入 excel、ods 和 csv 以及制表符分隔的文件。
    • oxcelix - 一个快速的 Excel 2007/2010 (.xlsx) 文件解析器,它返回矩阵对象的集合。
    • wrap_excel - WrapExcel 是对 win32ole 的封装,方便使用 ruby 进行 Excel 操作。
  • libpcap
    • PacketFul - 用于读取和写入数据包到接口或 libpcap 格式文件的库。
  • JSON
    • JsonCompare - 返回两个 JSON 文件之间的差异。
    • JSON — 包括 JSON 的纯 Ruby 和 C 实现。
    • JSON::Stream — 一个流式 JSON 解析器,可生成类似 SAX 的事件。
    • YAJL — Ruby 的流式 JSON 解析和编码库(C 绑定到 YAJL)。
    • OJ — 优化 JSON,顾名思义,是为了提供速度优化的 JSON 处理而编写的。到目前为止,它已经实现了这一点,并且比任何其他 Ruby JSON 解析器快大约 2 倍,并且在序列化 JSON 方面快 3 倍或更多倍。
  • Markdown
    • kramdown - Kramdown 是另一种降价解析器,但速度快,纯 Ruby,使用严格的语法定义并支持几个常见的扩展。
    • Maruku - 一个纯 Ruby Markdown-superset 解释器。
    • Redcarpet - 一个快速、安全和可扩展的 Markdown 到 (X)HTML 解析器。
  • Feed/RSS
    • Feed normalizer - Atom 和 RSS 解析器的可扩展 Ruby 包装器。
    • Feedjira - 一个提要获取和解析库。
    • Ratom - 一个快速的、基于 libxml 的 Ruby Atom 库。
    • Simple rss - 一个简单、灵活、可扩展、自由的 RSS 和 Atom 阅读器。
  • BSON
  • 消息包
    • MessagePack — 一种高效的二进制序列化格式。它允许您在 JSON 等多种语言之间交换数据,但速度更快、体积更小。例如,小整数(如标志或错误代码)被编码为单个字节,而典型的短字符串除了字符串本身之外只需要一个额外的字节。请参阅 http://msgpack.org
  • Protobuf
    • Protobuf — Protocol Buffers 的 Ruby 实现。
  • RDF
    • rdf - 用于处理资源描述框架 (RDF) 数据的纯 Ruby 库

自然语言处理

用于处理人类语言的库。

  • 一般的
    • Treat - Treat 是 Ruby 中用于自然语言处理和计算语言学的工具包。
    • Pragmatic Segmenter - Pragmatic Segmenter 是一个基于规则的句子边界检测 gem,可以在多种语言中开箱即用。
    • 文本 - 文本算法的集合,包括 Levenshtein 距离、Metaphone、Soundex 2、Porter 词干和白色相似度。
    • whatlanguage - 一个用于 Ruby 的语言检测库,它使用布隆过滤器来提高速度。
    • nlp - 波兰语的 NLP 工具。
    • NlpToolz - 基本的 NLP 工具,主要基于 OpenNLP,此时实现了句子查找器、标记器和 POS 标记器,以及 Berkeley Parser。
    • Open NLP (Ruby bindings)
    • 斯坦福核心 NLP(Ruby 绑定)
    • ve - 一个易于使用的语言框架。
    • zipf - 各种 NLP 工具和库的集合。
    • ruby-ner - 使用斯坦福 NER 和 Ruby 进行命名实体识别。
    • ruby-nlp - 用于斯坦福 Pos-Tagger 和名称实体识别器的 Ruby 绑定。
    • linkparser - CMU 链接的 Abiword 版本的 Ruby 绑定语法,英语的句法解析器。
  • 词性标注器
    • engtagger - 英语词性标注库; Lingua::EN::Tagger 的 Ruby 端口。
    • rbtagger - 一个简单的基于 ruby​​ 规则的词性标注器。
    • TreeTagger for Ruby - Helmut Schmid 的 TreeTagger 基于 Ruby 的包装器。
  • 句子分割
  • 词干
  • 总结
    • Epitome - 一个让你的文字更短的小宝石; Lexrank 算法的实现
    • ots - 用于打开文本摘要器的 Ruby 绑定。
    • summarize - Open Text Summarizer 的 Ruby C 包装器。
  • 分词器
    • Jieba - 中文分词器和分词器(jRuby)。
    • MeCab - 日本形态分析仪 [MeCab Heroku buildpack]
    • NLP Pure - 在纯 Ruby 中实现的自然语言处理算法具有最小的依赖关系。
    • rseg - 纯 Ruby 中的中文分词 (中文分词) 例程
    • thailang4r - 泰语分词器。
    • tiny_segmenter - TinySegmenter.js 的 Ruby 端口,用于标记日语文本。
    • tokenizer - 一个简单的多语言分词器。
  • 字数
    • wc - 用于计算给定文本中单词出现次数的 ruby​​gem。
    • word_count - Ruby 中字符串和哈希的字数计数器。
    • 字数分析器 - 根据使用的工具分析可能导致字数差异的文本潜在区域的字符串。
    • WordsCounted - 高度可定制的 Ruby 文本分析器。

浏览器自动化和仿真

  • selenium - 浏览器自动化框架和生态系统。
  • Watir - 基于 WebDriver 的 Ruby 绑定构建的 Watir 实现。
  • capybara-webkit - 用于无头 WebKit 的 Capybara 驱动程序,用于测试 JavaScript Web 应用程序。
  • poltergeist - Capybara 的 PhantomJS 驱动程序。

多处理

  • 赛璐珞 - 基于 Actor 的 Ruby 并发对象框架。
  • 并行 - 在并行进程(> 使用所有 CPU)或线程(> 加速阻塞操作)中运行任何代码。
  • Concurrent Ruby - 现代并发工具,包括代理、期货、承诺、线程池、监督者等。
  • childprocess - 用于管理子进程的跨平台 ruby​​ 库。
  • forkoff - 用于 ruby​​ 的脑死简单并行处理。
  • posix-spawn - Fast Process::spawn for Rubys >= 1.8.7 基于 posix_spawn() 系统接口。
  • thread — 线程库的扩展(包括线程池)。
  • Sprawling — 为 Rails 生成 gem,以轻松分叉或线程化长时间运行的代码块。

异步

用于异步网络编程的库。

队列

  • Resque 一个 Redis 支持的 Ruby 库,用于创建后台作业,将它们放置在多个队列中。
  • Delayed::Job — 数据库支持的异步优先级队列。
  • Qu 一个用于排队和处理后台作业的 Ruby 库。
  • Sidekiq - 一个全功能的 Ruby 后台处理框架。它旨在简单地与 ​​ 任何现代 Rails 应用程序集成复制和比其他现有解决方案更高的性能。
  • Sneakers - Ruby 和 RabbitMQ 的快速后台处理框架。
  • Backburner - Backburner 是一个 beanstalkd 驱动的作业队列,可以处理大量的作业。
  • Delayed::Job - 数据库支持的异步优先级队列。
  • Que - 一个 Ruby 作业队列,它使用 PostgreSQL 的咨询锁来提高速度和可靠性。
  • Shoryuken - 一个超高效的基于 AWS SQS 线程的 Ruby 消息处理器。
  • Sucker Punch - 使用赛璐珞的单进程后台处理库。目标是成为 Sidekiq 的弟弟。

电子邮件

用于解析电子邮件的库。

  • mail 一个真正的 Ruby 邮件库

URL 操作

用于解析 URL 的库。

  • addressable - Addressable 是 URI 实现的替代品,它是 Ruby 标准库的一部分。它更符合 RFC 3986、RFC 3987 和 RFC 6570(第 4 级),提供对 IRI 和 URI 模板的支持。

网页内容提取

用于提取网页内容的库。

  • Metainspector - 抓取给定的 URL,并返回其标题、元描述、元关键字、包含所有链接的数组、其中的所有图像等。
  • LinkThumbnailer - 从给定 URL 生成缩略图图像和视频的 Ruby gem。很像带有链接预览的流行社交网站。
  • docsplit - Docsplit 是一个命令行实用程序和 Ruby 库,用于将文档拆分为其组成部分。
  • Ruby Readability - 提取网页主要可读内容的工具。

WebSocket

使用 WebSocket 的库。

  • em-websocket - 基于 EventMachine 的 WebSocket 服务器。
  • Faye - 一组工具,用于在 Web 客户端之间进行简单的发布-订阅消息传递。
  • Firehose - 构建实时 Ruby Web 应用程序。
  • Slanger - 与 Pusher 库兼容的开放式 Pusher 实现。

DNS 解析

  • em-resolve-replace - EventMachine-aware 纯 Ruby DNS 解析。
  • Celluloid::DNS - 一个高性能的 DNS 客户端解析器和服务器,可以很容易地集成到其他项目中或用作独立的守护进程。它是从 RubyDNS 派生的,现在根据这个库实现。

计算机视觉

地理位置

  • geocoder - 一个完整的 Ruby 地理编码解决方案。借助 Rails,它添加 ​​ 了地理编码(按街道或 IP 地址)、反向地理编码(根据给定坐标查找街道地址)和距离查询。
  • Geokit - Geokit gem 提供地理编码和距离/航向计算。
  • geoip - 在 GeoIP 数据库中搜索给定的主机或 IP 地址,并返回有关分配 IP 地址的国家、城市、ISP 和其他信息信息。

其他 Ruby 列表