nokogiri 相关问题

适用于Ruby的HTML,XML,SAX和Reader解析器,能够通过XPath或CSS3选择器搜索文档......等等

Ruby Web Scrape (Nokogiri) - 清理

我正在尝试如何抓取网站数据。 这是我经过几天的研究后整理出来的,但是,Nokogiri 的输出并不像我预期的那么“干净”。当我...

回答 2 投票 0

替换 Nokogiri 节点中的部分文本,同时保留内容中的标记

我试图通过使用 Nokogiri 扫描节点内容然后执行 gsub 来替换一堆文件中唯一字符串的实例。我将部分绳子保留在适当的位置,并且

回答 2 投票 0

没有与我的 Ruby 兼容的 nokogiri 版本

我正在从 GitHub 安装 2017 Rails 项目。据我了解,在克隆项目之前我需要先安装 Ruby 和 Rails。该项目使用 Ruby 2.4.1 和 Rails 版本 5.0.1,所以我...

回答 1 投票 0

在nokogiri轨道上找到一级儿童

我遇到了一个问题,如何从当前元素中找到第一级子元素? 例如我有 html : abc定义 我遇到了如何从当前元素中查找第一级子元素的问题? 例如我有 html : <table> <tr>abc</tr> <tr>def</tr> <table> <tr>second</tr> </table> </table> 我正在使用 Nokogiri 作为轨道: table = page.css('table') table.css('tr') 它返回 tr 内的所有 table。 但我只需要 2 个第一层的桌子。 当你说这句话时: table = page.css('table') 您将抓住两张桌子,而不仅仅是顶层桌子。因此,您可以返回到文档根目录并使用仅匹配第一个表中的行的选择器,如 mosch 所说,或者您可以将 table 修复为仅包含以下内容的外表: table = page.css('table').first trs = table.xpath('./tr') 甚至是这个(取决于 HTML 的实际结构): table = page.xpath('/html/body/table') trs = table.xpath('./tr') 或者可能是其中之一 table(再次感谢 Phrogz): table = page.at('table') table = page.at_css('table') # or various other CSS and XPath incantations 你可以做 rows = page.css('body > table > tr') 也许您必须使选择器适应您的容器元素(我在这里选择“body”) 还有另一种方法,你可以尝试使用这样的东西: text = <<HERE <table> <tr>abc</tr> <tr>def</tr> <table> <tr>second</tr> </table> </table> HERE xml = Nokogiri::XML(text) xml.xpath("/table/tr/").each do |node| puts node.text end 在此示例中,“/table/tr”表达式表示所需元素的绝对路径 - 在我们的示例中为“tr”。 xpath 对我不起作用 下面的代码对我来说效果很好。 table = page.css('table') table.css('> tr') 你愿意尝试这个吗? tables = doc.css('table') tables.each do |table| rows = table.css('tr') rows.each do |row| if row.parent == table # Some action here... end end end

回答 5 投票 0

如何获取节点的水平深度?

注意我创造了术语“水平深度”来测量树内节点的子维度。 所以想象一下,它会有像 /html/table/tbody/tr/td 这样的 xpath,以及“水平深度”o...

回答 3 投票 0

Rails Nokogiri 从 url 获取 xml

我最近学习了如何使用 nokogiri 将 XML feed 导入到 Rails 中,代码如下。 我可以选择直接从 URL 访问它,而不是从 URL 下载我的 feed。 让...

回答 2 投票 0

如何使用 Nokogiri 保存 XML 文件中的更改

我有以下简单的 XML 文件。 我想使用 Nokogiri 将内容添加到用户映射。 这是我的代码: f = 文件...

回答 1 投票 0

MacOs (M1 Arm64) 无法加载 Nokogiri - 使用系统默认 Ruby

我需要一些帮助。我正在设置一台新的 2020 年 Macbook Pro M1。 我已经完成了在 Mac 上安装 ruby/rails 的所有常规步骤,但是我无法完成 Rails new。点击

回答 4 投票 0

如何使用 Ruby 查找 DOM 元素是否具有事件侦听器

我正在使用 Watir 和 Nokogiri 来解析网页并与它们交互。我想确定 DOM 元素在单击时是否触发脚本。根据我的研究,我了解到这...

回答 2 投票 0

将一个巨大的字符串作为参数传递给 Sidekiq 工作人员是个好主意吗?

我正在开发一个爬虫,它可以浏览网站并在 Sidekiq 工作人员中解析网站的特定部分。想象一下当抓取工具访问一个包含 10 个元素的网站时的情况,我是

回答 2 投票 0

仅选择嵌套 div 的底部,而不知道它们的嵌套程度

我正在尝试抓取一个不使用类或id的网站,结构如下: 部分内容 我正在尝试抓取一个不使用类或ID的网站,结构如下: <div> <div> <div> Some content </div> </div> <div> Other content <div> </div> 我正在尝试类似 doc.css('div div') 的内容,但这会返回内容的重复项,因为嵌套容器都与该选择器匹配。 如何仅选择巢的底部,并且知道它们的深度不一样? 问题的另一种表达方式是,有没有办法做类似“没有 div 子项的 div”之类的事情?它可能有其他孩子,只是没有div 编辑: 试图澄清,通过上面的 html 我可以调用: doc.css('div div').map(&:text) 获取文档的文本,按div分成数组。问题是,该行返回“Some content”两次,因为即使它在 html 中存在一次,但有两个“div div”与该文本匹配。 // will be used to store all the leaves const leaves = []; // uses recursion to find all the leaves const findLeaves = ($branch) => { if ($branch.children.length === 0) { leaves.push($branch); return; } [...$branch.children].forEach(($branch) => findLeaves($branch)); }; // parent element of elements you want to search through const $branch = document.querySelector("body > div"); // initiate finding leaves findLeaves($branch); // remove from all the leaves non divs const what_you_want = leaves.filter(($leaf) => $leaf.tagName === "DIV"); console.log(what_you_want);

回答 1 投票 0

使用 Nokogiri,如何将 html 转换为文本块元素(确保它们导致换行)

Nokogiri #content 方法不会将块元素转换为段落;例如: fragment = '地狱oworld我是乔希' Nokogiri::...

回答 3 投票 0

为什么 Nokogiri 的 to_xhtml 从 `name` 创建新的 `id` 属性?

考虑以下代码: 需要'nokogiri'#v1.5.2 doc = Nokogiri.XML('ick') 把 doc.to_html #=>我...

回答 2 投票 0

在 Pi Zero 上安装 nokogiri

我对此很陌生,所以如果这是一个微不足道的问题/问题,请原谅。 我有一个 Pi Zero (ARMv6) 并成功安装了 Ruby (3.0.0p0) 和 Rails (7.0.4.3)。一切似乎都很好,我...

回答 0 投票 0


如何查看一个 Nokogiri::XML::Node 是否包含另一个 Nokogiri::XML::Node 的一部分?

使用 ruby Nokogiri 我有一个 Nokogiri::XML::Node 对象(ConstituencyXMLNode 继承自 Nokogiri::XML::Node),它是一个像这样的树对象: #(ConstituencyXMLNode:0xc3c8 { name = "PP&quo...

回答 0 投票 0

尝试使用 Nokogiri 抓取图像,但它返回了一个我没想到的链接

我正在做一个抓取练习,并尝试使用 Nokogiri 从网站上抓取海报。 这是我想要获得的链接: https://a.ltrbxd.com/resized/film-poster/5/8/6/7/2/3/586723-glass-o...

回答 2 投票 0

回答 1 投票 0

用rails 3.1.0和ubuntu安装Nokogiri 1.5.0出错。

以下是在服务器上运行bundle install vendorgems的错误。安装nokogiri (1.5.0)与本地扩展 Gem::Installer::ExtensionBuildError: ERROR.建立 gem 原生扩展失败。构建 gem 原生扩展失败。...

回答 8 投票 37

开放式Uri挂机

我试图在Nokogiri类中使用open-uri Script require 'nokogiri' require 'open-uri' open("http:/www.ruby-lang.org") {/docs.ruby-lang.orgen2.0.0OpenURIOpenRead.html。

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.