在 Ruby 中抓取/解析 Google 搜索结果

2023-11-23

假设我有 Google 搜索结果页面的完整 HTML。有谁知道任何现有的代码(Ruby?)来抓取/解析Google搜索结果的第一页?理想情况下,它可以处理可能出现在任何地方的购物结果和视频结果部分。

如果没有,那么基于 Ruby 的最佳屏幕抓取工具是什么?

澄清一下:我知道以编程方式/API 方式获取 Google 搜索结果很困难/不可能,并且简单地卷曲结果页面有很多问题。 stackoverflow 上对这两点都达成了共识。我的问题有所不同。


这应该是很简单的事情,看看“使用 ScrAPY 进行屏幕抓取” Ryan Bates 的屏幕截图。您仍然可以不抓取库,只需坚持诸如此类的事情即可Nokogiri.


来自 诺科吉里文档:

require 'nokogiri'
require 'open-uri'

# Get a Nokogiri::HTML:Document for the page we’re interested in...

doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove'))

# Do funky things with it using Nokogiri::XML::Node methods...

####
# Search for nodes by css
doc.css('h3.r a.l').each do |link|
  puts link.content
end

####
# Search for nodes by xpath
doc.xpath('//h3/a[@class="l"]').each do |link|
  puts link.content
end

####
# Or mix and match.
doc.search('h3.r a.l', '//h3/a[@class="l"]').each do |link|
  puts link.content
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Ruby 中抓取/解析 Google 搜索结果 的相关文章

  • 如何在 Rails 中将随机日期时间四舍五入到小时开始?

    基本上我想获得去年内的随机日期时间 rand 1 year ago gt Sun 22 Sep 2013 18 37 44 UTC 00 00 example 但是我该如何指定或限制这个时间呢 例如 Sun 22 Sep 2013 18 0
  • 学习 Ruby Hard Way 前。 48

    我正在努力学习 Ruby 并且已经完成了 Zed Shaw 的 艰难地学习 Ruby 的大部分内容 但最新的练习让我完全难住了 这是一种反向练习 让您创建一个可以通过提供的代码进行测试的类 Lexicon 您应该创建 Lexicon 以便它
  • 如何使用 new 干净地初始化 Ruby 中的属性?

    class Foo attr accessor name age email gender height def initalize params name params name age params age email params e
  • 将 gmaps4rails 与 https/SSL 结合使用

    我是 gmaps4rails 的忠实粉丝 它使向我们的网络应用程序添加地图变得非常容易 我现在遇到的唯一问题是 如果您在 https 页面上使用它 则会收到有关混合内容的安全警告 谷歌地图API确实支持https 所以我认为这只是将脚本引用
  • google 使用什么算法让 Chrome 浏览器的地址栏充当许多网站的默认搜索栏?

    我想知道谷歌使用什么算法来使 chrome 浏览器的地址栏充当许多网站 如 SO Quroa 等 的默认搜索栏 但不适用于 facebook metastackoverflow 等 例如 如果你想在 stackoverflow 中搜索某个主
  • 如何在 Rails 应用程序中删除 URL 的尾部斜杠? (在 SEO 视图中)

    为了避免内容重复 我希望避免通过多个 URL 带或不带尾部斜杠 访问我的网站页面 目前 URL catalog product 1 and catalog product 1 导致同一页面 我的目标是将第二个 URL 重定向到第一个 当然是
  • 如何在自定义类上使用 ActiveModel 验证和回调?

    我正在尝试在自定义类上使用 ActiveModel 验证和回调 class TestClass include ActiveModel Validations define model callbacks validate attr acc
  • 在 Windows 中安装 RubyGems

    我是红宝石新手 我尝试按照网站中给出的步骤在我的电脑上安装 Ruby Gemshttp rubygems org pages download http rubygems org pages download 我从上述站点下载了软件包 将目
  • 使用 FactoryGirl 测试简单的 STI

    我有一个类 它是其他一些专门处理该行为的类的基础 class Task lt ActiveRecord Base attr accessible type name command validates presence of type na
  • 如何静默启动Sinatra + Thin?

    我有一个 Sinatra Base webservice 我想从命令行 Ruby 程序启动它 所以我有这个 command line program file require mymodule server puts Running on
  • 耙子的目的是什么?

    我知道 Rake 代表 Ruby Make 而且我知道 Make 是一个 Unix 构建实用程序 现在 我来自 Xcode 工作 将 iPhone 应用程序构建到 Ruby 所以我以前从未使用过 Make 我唯一使用 rake 的时候是在
  • 拆分字符串而不删除分隔符

    我需要解析一个文件以获取单个 SQL 语句并从 Rails 控制器运行它们 我有以下代码 sql file RAILS ROOT lib evidence interface import sql sql stmts array File
  • 为什么 Ruby 中两个用空格分隔的字符串连接在一起?

    为什么这在 Ruby 中有效 foo bar gt foobar 我不确定为什么要连接字符串而不是给出语法错误 我很好奇这是否是预期的行为 以及解析器是否负责争论 没有运算符的两个字符串被视为单个字符串 或者语言定义本身指定了这种行为 隐式
  • Rails 中带有 text_field 的逗号分隔数组

    我有一些users可以有很多posts 并且每个帖子都可以有很多tags 我已经使用一个实现了拥有并属于许多帖子和标签之间的关系 创建新帖子时 用户可以使用逗号分隔的值列表对其进行标记 就像在 SO 上发布新问题时一样 如果任何标签尚不存在
  • 相当于 JavaScript 中 Ruby 的each_cons

    许多语言都曾提出过这个问题 但 javascript 却没有 Ruby 有方法Enumerable each cons https devdocs io ruby 2 5 enumerable method i each cons看起来像这
  • 使用 slim 或 haml 在独立(非 Rails)Ruby 应用程序中指定布局和模板

    我正在尝试在独立 不是 Rails 应用程序中执行类似的操作 布局 slim h1 Hello content yield 显示 苗条 object name object description 我不知道如何指定布局和模板 slim 或h
  • 使用 PayPal REST API,如何取消付款?

    使用 PayPal REST API 在客户点击 取消订单并返回网站 链接后 我似乎无法弄清楚如何取消付款 也许在生产模式下 PayPal 会自动取消这些付款 但在沙盒模式下它们似乎仍处于 已创建 状态 这一观察结果使我相信 我需要在返回网
  • 无法使用 gem 添加源

    我正在尝试添加http rubygems org http rubygems org 在我的来源中 因为我无法使用 gem install NAME 此错误 无法在任何存储库中找到有效的 gem dashing gt 0 所以 我执行了这个
  • Ruby 解释器嵌入到 C 代码中

    我只是尝试书中的一个简单例子 我有一个 sum rb 文件 class Summer def sum max raise Invalid maximum max if max lt 0 max max max 2 end end 还有一个
  • 创建并初始化具有连续名称的类的实例

    我有一个BankAccount班级 我试图创建这个类的多个实例并将它们放入一个数组中 例如 accounts Ba1 BankAccount new 100 Ba2 BankAccount new 100 我想初始化包含大量实例的数组 假设

随机推荐

  • 如何淡入/淡出矩形或文本?

    我想实现淡入 淡出矩形或文本的效果 我在 UIVIew 的 drawRect 方法中调用 CGContextFillRect 或 CGContextShowText 我想知道是否有一种方法可以在不使用 UIView 支持的情况下实现动画 即
  • .find() 比基本后代选择方法更快吗?

    滑轨 30 英寸保罗 爱尔兰的博客提及 container find div robotarm 比 container div robotarm 这是真的 也许在 jQuery 的早期版本中就是这种情况 然而 表达 container di
  • Hibernate 标准查询使用键字段上的 Max() 投影并按外键进行分组

    我很难将此查询 直接在数据库上工作 表示为 Hibernate 版本 3 2 5 中的条件查询 SELECT s FROM ftp status s WHERE s datetime s connectionid IN SELECT MAX
  • 在 WinSock 中处理异步套接字?

    我正在使用消息窗口和 WSAAsyncSelect 如何使用一个消息窗口跟踪多个套接字 客户端 Windows 支持多种套接字操作模式 您需要明确您正在使用哪一种 阻塞套接字 发送和接收块 非阻塞套接字 send和recv返回E WOULD
  • 如何在服务器端运行不受信任的代码?

    我试图使用沙盒模块在 linux node js 中运行不受信任的 javascript 代码 但它已损坏 我需要的只是让用户编写打印输出一些文本的 javascript 程序 不允许其他 I O 只使用普通的 javascript 没有其
  • javax.ejb.Singleton在集群环境下是如何单例的?

    我需要为集群环境中的所有用户和所有节点维护一个在应用程序中唯一的简单计数器 我考虑过使用单例会话 bean 注释 javax ejb Singleton 如下所示 package foo import javax ejb Singleton
  • 如何突出显示 Rails 验证错误上的字段

    如何在 Rails 3 1 中突出显示未通过验证错误的字段的表单字段 我知道脚手架会自动生成 css 和控制器代码来处理这个问题 但我想知道是否有办法手动生成 我已经通过以下方式实现了错误消息的字符串显示 user errors full
  • 如何在单个 for-eachin XSLT 中选择多个节点

    我正在尝试学习 XSLT 但通过示例效果最好 我想执行一个简单的模式到模式转换 如何仅通过一次传递来执行此转换 我当前的解决方案使用两次传递并丢失客户的原始订单 From
  • 如何使用 Java 中的流创建两个数组的映射?

    假设我有两个数组Double Double a new Double 1 2 3 Double b new Double 10 20 30 使用 Java 流 如何创建地图 Map
  • 比较两个 xml 并使用 LINQ 打印差异

    我正在比较两个 xml 并且必须打印差异 我怎样才能使用 LINQ 来实现这一点 我知道我可以使用 Microsoft 的 XML diff 补丁 但我更喜欢使用 LINQ 如果你有任何其他想法我会实现 第一个XML
  • 如何获取通过 USB 端口连接到 Android 设备的条码扫描仪的扫描结果?

    外部激光条码扫描仪连接到 Android POS 设备 我需要在我的应用程序中访问扫描结果 这怎么可能 需要 Android 操作系统版本 2 3 及以上版本的支持 大多数 USB 扫描仪通过 HID 配置文件连接 因此 Android 应
  • 无法在文本框中输入双精度值

    我正在开发 mvc net Web 应用程序 并使用实体框架来生成模型 我有包含双精度属性的类 我的问题是当我使用 HTML EditorFor model gt model Double attribute 并测试我的应用程序 我无法在该
  • null==object 和 object==null 之间的区别[重复]

    这个问题在这里已经有答案了 您好 我想知道上述比较之间的区别 当我检查时出现空指针异常object getItems null 但如果我把它改成null object getItems 效果很好 我确实调查过这个null object 和
  • Anaconda 未更新到最新版本

    anaconda的最新版本是2 5 当我输入 conda update conda conda update anaconda I get All requested packages already installed packages
  • 如何设置 Gruntfile 在 heroku 上使用 compass/sass?

    我已经成功设置了我的heroku应用程序咕噜构建包 当我将 Node js 应用程序推送到 heroku 时 它将运行适当的 grunt 任务 我想要的是使用 grunt contrib compass 包来编译我的 scss 文件 但这需
  • Lambda + Python + 退出代码

    我遇到了用 Python 编写的简单 AWS Lambda 函数的问题 当我运行 Lambda 函数时 我的代码按预期运行 结果正确 但仍以错误代码 退出代码 结束 Process exited before completing requ
  • 如何从文本框中删除光标?

    这是我的代码 table tr td td tr table
  • Numpy - 将行添加到数组

    如何向 numpy 数组添加行 我有一个数组A A array 0 1 2 0 2 0 如果 X 中每行的第一个元素满足特定条件 我希望从另一个数组 X 向该数组添加行 Numpy 数组没有像列表那样的 追加 方法 或者看起来是这样 如果
  • 如何使用javascript检查页面是否是第一次加载

    我想检查页面是否是第一次加载 如果是 则显示过滤器 如果我将 showFiltermenu 放在 pageLoad 函数中 那么每次加载页面时它都会显示 但我只想它第一次显示 我尝试使用Page IsPostBack但不显示过滤器
  • 在 Ruby 中抓取/解析 Google 搜索结果

    假设我有 Google 搜索结果页面的完整 HTML 有谁知道任何现有的代码 Ruby 来抓取 解析Google搜索结果的第一页 理想情况下 它可以处理可能出现在任何地方的购物结果和视频结果部分 如果没有 那么基于 Ruby 的最佳屏幕抓取