使用 Nokogiri 解析:"each" 和 "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时,您的somethingnil

为了避免这个问题,您可以使用try:

调用content
something.try(:content)

这样,即使某些somethingnil,你的程序也不会崩溃。

通常这意味着您的输入在某些时候会发生变化。例如,您正在解析一个循环中的节点数组,并试图从链接访问get内容,如下所示:

<div><a href="">test</a></div>
<div><a href="">test</a></div>
<div></div>

注意第三个div。如果您期望在代码中div始终包含链接,那么您的代码将在没有链接的div上失败,因为链接将是nil,并且试图在nil上获取内容会给您一个错误。

要解决这个问题,您可以使用link.try(:content)而不是直接调用link.content

相关内容

  • 没有找到相关文章

最新更新