Ruby 鲁比<;命名错误>;

Ruby 鲁比<;命名错误>;,ruby,image,download,offset,Ruby,Image,Download,Offset,我正在使用以下脚本下载FFFFound整个目录图像,但在收到第一批文件后,我遇到了一个问题,我收到了此错误消息: ffffound_mirror_db.rb:45in 'block in populate_db': undefined method 'inner_html' for nil:NilClass <NoMethodError> from ffffound_mirror_db.rb:39:in 'each' from ffffound_mirror_db.r

我正在使用以下脚本下载FFFFound整个目录图像,但在收到第一批文件后,我遇到了一个问题,我收到了此错误消息:

ffffound_mirror_db.rb:45in 'block in populate_db': undefined method 'inner_html' for nil:NilClass <NoMethodError>
    from ffffound_mirror_db.rb:39:in 'each'
    from ffffound_mirror_db.rb:39:in 'populate_db'
    from ffffound_mirror_db.rb:190:in <main>
fffound\u mirror\u db.rb:45in'块填充\u db':nil:NilClass的未定义方法'inner\u html'
来自ffffound_mirror_db.rb:39:in'each'
来自ffffound_mirror_db.rb:39:in“populate_db”
来自ffffound_mirror_db.rb:190:in
我试图下载一个目录的所有99页,因此每批的偏移量必须增加25,例如:0、25、50、75、100

#/usr/bin/ruby
需要“rubygems”
要求“等”
需要“hpricot”
需要“json”
需要“打开uri”
需要'sqlite3'
需要“时间”
需要“日期”
需要“fileutils”
def填充_数据库(数据库、用户、类型)
域=”http://ffffound.com/"
偏移量=0
这两部分中的图像\u sql=:

title_elem = (image/"div.title")
info[:title] = title_elem.at("a").inner_html

desc_elem = (image/"div.description")
desc = desc_elem.inner_html
您不检查元素是否存在,而是在之后立即调用
internal\uhtml
。因此,基本上,如果
desc\u elem
nil
,则调用
nil.inner\u html
,这会引发异常,因为对于
nil
没有这样的方法

要解决此问题,请将相应的行替换为(对于不带Rails的Ruby)

在Rails中,有一种方法可以防止这种异常引发,所以

title_elem = (image/"div.title")
info[:title] = title_elem.at("a").try(:inner_html)

desc_elem = (image/"div.description")
desc = desc_elem.try(:inner_html)
如果您使用Rails,这是一个解决方案

title_elem = (image/"div.title")
info[:title] = title_elem.at("a").try(:inner_html)

desc_elem = (image/"div.description")
desc = desc_elem.try(:inner_html)