使用 Nokogiri 解析:"each" 和 "content",有效但出错
Parsing with Nokogiri: "each" and "content", works but gives error
我使用 Nokogiri gem 通过 'each' 和 'content' 方法解析网站。它是复杂的解析器,具有这些方法的多种用途。由于某种原因,在某些时候任务失败并出现错误。 nillclass 的未定义方法 'content'。并为我使用 类 的所有通道提供参考。这不是常规的致命错误,如果我尝试放置这些内容的结果,它会打印所需的结果但仍然崩溃。这是我得到的错误:
rake aborted!
undefined method `content' for nil:NilClass
/mnt/shoppe/lib/tasks/parser.rake:50:in `block (6 levels) in <top (required)>'
/mnt/shoppe/lib/tasks/parser.rake:49:in `block (5 levels) in <top (required)>'
/mnt/shoppe/lib/tasks/parser.rake:47:in `block (4 levels) in <top (required)>'
/mnt/shoppe/lib/tasks/parser.rake:27:in `block (3 levels) in <top (required)>'
/mnt/shoppe/lib/tasks/parser.rake:12:in `block (2 levels) in <top (required)>'
我是 ruby 和 RoR 的新手。也许存在某种类型的错误,只有在达到一定数量的错误时才会使程序崩溃?找不到这样的提及,很可能我不知道要查找的关键字。所以任何帮助都会有用。谢谢。
Undefined method 'content' for nil:NilClass.
这个错误意味着,在你的 rake 任务的某个时刻,当你调用 something.content
时,你的 something
是 nil
。
为避免此问题,您可以使用 try:
调用 content
something.try(:content)
这样,如果某些 something
是 nil
,您的程序就不会崩溃。
通常这意味着您的输入有时会发生变化。例如,您在循环中解析节点数组并尝试从 link 访问获取内容,如下所示:
<div><a href="">test</a></div>
<div><a href="">test</a></div>
<div></div>
注意第三个 div。如果您在代码中期望 div
始终包含 link,您的代码将在没有 link 的 div 上失败,因为 link 将是 nil
并尝试在 nil
上获取内容会给你一个错误。
要解决此问题,您可以使用 link.try(:content)
而不是直接调用 link.content
。
我使用 Nokogiri gem 通过 'each' 和 'content' 方法解析网站。它是复杂的解析器,具有这些方法的多种用途。由于某种原因,在某些时候任务失败并出现错误。 nillclass 的未定义方法 'content'。并为我使用 类 的所有通道提供参考。这不是常规的致命错误,如果我尝试放置这些内容的结果,它会打印所需的结果但仍然崩溃。这是我得到的错误:
rake aborted!
undefined method `content' for nil:NilClass
/mnt/shoppe/lib/tasks/parser.rake:50:in `block (6 levels) in <top (required)>'
/mnt/shoppe/lib/tasks/parser.rake:49:in `block (5 levels) in <top (required)>'
/mnt/shoppe/lib/tasks/parser.rake:47:in `block (4 levels) in <top (required)>'
/mnt/shoppe/lib/tasks/parser.rake:27:in `block (3 levels) in <top (required)>'
/mnt/shoppe/lib/tasks/parser.rake:12:in `block (2 levels) in <top (required)>'
我是 ruby 和 RoR 的新手。也许存在某种类型的错误,只有在达到一定数量的错误时才会使程序崩溃?找不到这样的提及,很可能我不知道要查找的关键字。所以任何帮助都会有用。谢谢。
Undefined method 'content' for nil:NilClass.
这个错误意味着,在你的 rake 任务的某个时刻,当你调用 something.content
时,你的 something
是 nil
。
为避免此问题,您可以使用 try:
调用content
something.try(:content)
这样,如果某些 something
是 nil
,您的程序就不会崩溃。
通常这意味着您的输入有时会发生变化。例如,您在循环中解析节点数组并尝试从 link 访问获取内容,如下所示:
<div><a href="">test</a></div>
<div><a href="">test</a></div>
<div></div>
注意第三个 div。如果您在代码中期望 div
始终包含 link,您的代码将在没有 link 的 div 上失败,因为 link 将是 nil
并尝试在 nil
上获取内容会给你一个错误。
要解决此问题,您可以使用 link.try(:content)
而不是直接调用 link.content
。