我的while循环以某种方式被破坏..我收到此错误:
`block in scrape': undefined method `post_match' for nil
:NilClass (NoMethodError)
它返回nil就像它在经过字符串之后所假设的一样,并且它也像它所假设的那样填充数组,但是它最后一次击中.post_match它失败了因为它是一个零...但它应该是一个零.. 不知道该怎么办??我希望它只是填充数组,然后在parent_pic_first为nil时退出循环。
parent_pic_first = /\"hiRes\":\"/.match(pic).post_match
while parent_pic_first != nil
parent_pic = URI.extract(parent_pic_first, ['http'])
pic_list = []
pic_list.push(parent_pic[0])
parent_pic_first = /\"hiRes\":\"/.match(parent_pic_first).post_match
end
答案 0 :(得分:1)
错误不是parent_pic_first
是nil
的问题,问题是/\"hiRes\":\"/.match(parent_pic_first)
是nil
。您正尝试在post_match
值上调用方法nil
。 nil.post_match
显然无法发挥作用。
您需要添加一些检查以防止在post_match
上调用nil
,所以像这样:
parent_pic_first = /\"hiRes\":\"/.match(pic).post_match
while parent_pic_first != nil
parent_pic = URI.extract(parent_pic_first, ['http'])
pic_list = []
pic_list.push(parent_pic[0])
regex_return = /\"hiRes\":\"/.match(parent_pic_first)
if regex_return.nil?
break
else
parent_pic_first = regex_return.post_match
end
end