在完全加载之前使用 open-uri 和 nokogiri 读取 HTML

2023-11-21

我在用着open-uri and nokogiri使用 ruby​​ 进行一些简单的网络爬行。 有一个问题,有时 html 在完全加载之前就被读取了。在这种情况下,我无法获取除加载图标和导航栏之外的任何内容。 最好的告知方式是什么open-uri or nokogiri等到页面完全加载?

目前我的脚本如下所示:

require 'nokogiri'
require 'open-uri'

url = "https://www.the-page-i-wanna-crawl.com"
doc = Nokogiri::HTML(open(url, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE)) 
puts doc.at_css("h2").text

你所描述的情况是不可能的。的结果open只会传递给HTML之后open方法返回完整值。

我怀疑页面本身使用 AJAX 来加载其内容,正如评论中所建议的那样,在这种情况下,您可以使用 Watir 使用浏览器获取页面

require 'nokogiri'
require 'watir'

browser = Watir::Browser.new
browser.goto 'https://www.the-page-i-wanna-crawl.com'

doc = Nokogiri::HTML.parse(browser.html)

但这可能会打开一个浏览器窗口。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在完全加载之前使用 open-uri 和 nokogiri 读取 HTML 的相关文章

  • class_eval、class_exec、module_eval 和 module_exec 之间有什么区别?

    我正在读Module文档 但似乎无法理解它们的差异以及应该在哪里使用 怎么样eval不同于exec 我将回答比你的问题更多的内容 包括instance eval exec 在你的问题中 所有变体 instance module class
  • 两个 ruby​​ 进程之间的通信可能/容易吗?

    如果我有一个 ruby 脚本Daemon顾名思义 它作为守护进程运行 监视系统的某些部分并能够执行需要身份验证的命令 例如更改权限 是否有一种简单的方法来拥有第二个 ruby 脚本 例如client 与该脚本通信并向其发送命令 询问信息 我
  • 如何使用 Ruby on Rails 3 检查 HTTP 请求的“Content-Length”字段?

    我正在使用 Ruby on Rails 3 在我的视图文件中我有以下代码 为了避免服务器过载 我会在服务器接收上传文件之前检查上传文件的大小 这是因为 按下表单的提交按钮 服务器会先完整接收文件 然后再检查文件 我知道一个HTTP 请求有标
  • Rspec to have(n).items undefined 方法

    我正在尝试遵循指南关于代码 tuts http code tutsplus com tutorials ruby for newbies testing with rspec net 21297我不断收到错误 这是我的库规范 require
  • Ruby gem 环境问题 - LoadError: no such file to load -- robots

    我正在尝试使用 anemone gem 编写一个爬虫 这需要 robots gem 不管出于什么原因 机器人绝对不会包括在内 这是我的一些环境信息 gem list d robots LOCAL GEMS robots 0 10 1 Aut
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 将 Rack::Deflater 插入机架中的哪个位置?

    我目前有以下内容 use Rack Rewrite use Rack Cache verbose gt true metastore gt memcached localhost 11211 rack cache meta entityst
  • 需要野科切吗?没有要加载的文件

    我正在尝试开始使用 Nokogiri 我运行了命令 gem install nokogiri 作为 Windows 7 64 位 中的管理员 控制台显示 已成功安装 和 已安装 1 个 gem 当我输入时 gem list local OR
  • 回形针:样式取决于模型(has_many 多态图像)

    我已将模型设置为使用多态图像模型 这工作正常 但是我想知道是否可以更改每个模型的 styles 设置 找到了一些使用 STI 模型 Art has many images as gt imageable Image belongs to i
  • 从 Jekyll 插件向页面添加属性

    假设我想要一个包含如下内容的页面 h1 page comment count Comment s h1 for c in page comment list div strong c title strong br c content di
  • Chef - 使用动态变量创建模板?

    我在厨师食谱上遇到了一些挑战 我是厨师新手 所以请耐心等待 第 1 步 我的厨师食谱安装 Ruby Passenger 然后与 Nginx 一起编译 Passenger nginx 模块 Install passenger and ngin
  • 何时使用node.js、sinatra、rails? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这 3 种语言 框架的最佳用途是什么 混合所有 或 2 个 有用吗 如果您正在构建一个完整的 Web 应用程序 您可能应该使用 Rails 因为
  • 如何在 Ruby 中动态调用访问器方法[重复]

    这个问题在这里已经有答案了 不管这是否是好的做法 我如何在 Ruby 中动态调用访问器方法 这是一个示例类 class Test Class attr accessor a b end 我可以使用 Object send 方法来读取变量 i
  • 为什么包含此模块不会覆盖动态生成的方法?

    我试图通过包含一个模块来覆盖动态生成的方法 在下面的示例中 Ripple 关联添加了rows 方法表 我想调用该方法 但之后还要做一些额外的事情 我创建了一个模块来重写该方法 认为该模块的row 可以打电话super使用现有的方法 clas
  • 有没有办法避免自动更新 Rails 时间戳字段?

    如果您有数据库列created at and updated at当您创建和更新模型对象时 Rails 将自动设置这些值 有没有办法在不接触这些列的情况下保存模型 我正在引入一些旧数据 我想根据 不同名称的 旧数据字段中的相应值设置这些值
  • 为 Rails 上的 postgresql 创建用户

    我选择 postgresql 作为我的 Rails 数据库 但当我尝试运行 rake db create all 时 我遇到了一个明显常见的错误 即 致命 角色 app 不存在 我找到了两种解决方案 但我不确定哪一种是正确的 有一个网站说
  • 在 Yosemite 上安装 Ruby 1.9.2 时出错

    我在 Yosemite 上使用 rvm 安装 ruby 1 9 2 时遇到错误 有人可以帮助我吗 我更新了自制程序和rvm 我正在与其他人合作处理这个项目 所以我无法升级 ruby 我在下面放置了我的输出的链接 提前致谢 Kanyons M
  • 缺少带有 {:locale=>[:en], :formats=>[:html], 的模板布局/邮件程序

    我正在关注 Michael harlt Rails 教程 但出现此错误 缺少带有 locale gt en formats gt html variants gt handlers gt raw erb html builder 的模板布局
  • 使用 Ruby 重命名 S3 中的对象

    我想使用 Ruby sdk 重命名 s3 中的项目 我该怎么做呢 我努力了 require aws sdk s3 AWS config region gt region access key id gt key secret access
  • Rails 基本 Base64 身份验证

    我正在尝试复制此 GET curl 请求 curl D X GET H Authorization Basic dGVzdEB0YXByZXNlYXJjaC5jb206NGMzMTg2Mjg4YWUyM2ZkOTY2MWNiNWRmY2Nl

随机推荐

  • 升级pip后DistributionNotFound错误

    在阅读有关 virtualenv 的内容时here我意识到我没有 pip 1 3 所以我跑了pip install upgrade pip现在当我跑步时pip version我得到以下信息 Traceback most recent cal
  • 重复异步任务

    我对在 Android 应用程序中重复 AsyncTask 的可能性有疑问 我想重复一些操作 例如从服务器下载文件 如果由于某种原因无法下载该文件 则重复n次 有一种快速的方法可以做到这一点吗 您不能重复执行 AsyncTaskbut您可以
  • navigator.onLine 在我的手机上无法使用。如何检查互联网是否在线。离线???电话间隙

    我正在为我的应用程序使用phonegap 我的应用程序基本上用于来自一个网站的 RSS 提要 但我的要求是当没有互联网时应用程序应该alert offline 当应用程序在线运行时 所有数据都存储到数据库中 当互联网不存在时 数据会从数据库
  • 此处不允许使用 Maven Jetty 插件守护进程元素

    我正在尝试配置项目的 pom xml 文件 我希望它在测试阶段启动 Jetty 服务器 为了做到这一点 我应该将 daemon 元素添加到 Jetty 插件中 如下所示 但 IntelliJ 警告我 此处不允许使用 Element daem
  • Python Marshmallow Field 可以是两种不同的类型

    我想指定一个棉花糖模式 对于我的一个字段 我希望对其进行验证 但它可以是字符串或字符串列表 我尝试过原始字段类型 但这允许一切通过 有没有办法只验证我想要的两种类型 就像是 value fields Str or fields List 我
  • PHP 扩展未在 phpinfo 中加载

    所以我在 Mountain Lion 上运行 MAMP 并使用 pecl 安装了 gmagick 和 imagick 两者都是 relase 候选者 主要是因为 gmagick 没有稳定的版本并且 imagick 3 0 0 没有安装 它给
  • 公共功能与公共时段

    在我一年的 Qt 编程中 我学到了很多关于信号和槽的知识 但还不够 http doc qt io qt 5 signalsandslots html 插槽可以用来接收信号 但也是正常的 成员函数 那么 有什么理由不声明继承自的类中的每个函数
  • dartlang中的double.toStringAsFixed和toStringAsPrecision有什么区别?

    我想知道这两种方法有什么区别 我想toStringAsFixed修剪数字 但从 doc 中的示例来看 两者都对数字进行四舍五入 这是相关问题 https github com dart lang sdk issues 25947 1 Dou
  • 如何在 Xcode 4 中进行代码设计和沙箱助手应用程序?

    这就是问题 我有一个包含 HelperApp 的 MainApp Helper 应用程序用于登录项 因此我需要区分 MainApp 和 HelperApp 捆绑 ID 感谢 BuildPhase Copy 我将 HelperApp 复制到
  • X11 鼠标移动事件

    在 XLib 中创建窗口时 我提供给大家的口罩有哪些SetWindowAttributes event mask成员 我必须将什么传递给第 11 个参数XCreateWindow 我在主消息循环中寻找的事件是什么 我使用的地方XNextEv
  • 如何将 WSDL 文件转换为类文件

    我有一个 WSDL 文件 我想将 wsdl 文件转换为 Web 服务类文件 是否可以 如果是的话请详细地向我解释一下 在解决方案资源管理器中右键单击 您的项目并转到 添加服务 参考 按窗口底部的 高级 按窗口底部的 添加 Web 引用 在
  • Android TabLayout一旦切换fragment就不再显示内容

    我在我的项目中使用导航抽屉 其中有 5 个片段 在一个片段中 我在设计支持库中引入了 TabLayout 其中包括 2 个片段 一切正常 除了当我离开具有 TabLayout 的片段并切换回它时 所有内容都消失了 在 TabLayout 中
  • 悬停时从下到上更改背景

    我如何更改背景颜色a hover使用持续时间为 0 3 秒的从底部到顶部的过渡 ul li a a li li a a li li a a li ul 那可能吗 Thanks 没有办法 一般 在 CSS 中应用过渡方向 然而 我们可以解决办
  • 从多维数组中递归删除空元素和子数组

    我似乎找不到一个简单 直接的解决方案来解决 PHP 中从数组中删除空元素的老问题 我的输入数组可能如下所示 Array 0 gt Array Name gt EmailAddress gt 等等 如果有更多的数据 虽然可能没有 如果它看起来
  • 显示 UIActionSheet

    我想知道如何从屏幕底部显示 UIActionSheet 我尝试过使用showInView 方法与MainView作为显示它的视图 但我得到了MainView Undeclared error 您需要引用控制器视图 actionSheet s
  • 如何在java中以相同的顺序洗牌两个数组

    我有两个问题和答案数组 String questions Q1 Q2 Q3 String answers A1 A2 A3 I used Collections shuffle Arrays asList questions 打乱每个数组
  • Python 数组切片带有逗号?

    我想知道在切片 Python 数组时逗号的用途是什么 我有一个似乎有效的示例 但对我来说看起来很奇怪的行是 p 20 numpy log10 numpy abs numpy fft rfft data 2048 0 现在 我知道在对数组进行
  • 声明特定资源的授权

    我正在编写一个示例文件存储系统 仅用于 stackoverflow 的示例 我当前的域模型如下所示 public class User public int ID get set public string LoginIdentifier
  • 如何在 Facebook 上实现共享时将特定图像显示为缩略图?

    我正在尝试实现分享这个方法 我使用的代码如下 http www facebook com share php u my website url 现在 当 Facebook 显示时 它会在左侧显示一些缩略图 这些图片是从我的网站上挑选的 如何
  • 在完全加载之前使用 open-uri 和 nokogiri 读取 HTML

    我在用着open uri and nokogiri使用 ruby 进行一些简单的网络爬行 有一个问题 有时 html 在完全加载之前就被读取了 在这种情况下 我无法获取除加载图标和导航栏之外的任何内容 最好的告知方式是什么open uri