我试图从网站上刮一张桌子。
status = recPage.css("#MainContent_GridView1").css("tr")[line].css("td")[2].text.chomp.strip
我收到了一些行的错误。
未定义的方法`strip' for nil:NilClass(NoMethodError)
或
未定义的方法`chomp' for nil:NilClass(NoMethodError)
所以我想我可以使用chomp!.strip!
跳过nil
值。但显然它不允许我把这两个放在一条线上。
有没有办法修改它?
答案 0 :(得分:1)
怎么样:
status = recPage.css("#MainContent_GridView1").css("tr")[line].css("td")[2].text.chomp.strip rescue ""
它会将状态设置为""
;
答案 1 :(得分:0)
您收到这些错误是因为有.text=nil
的节点,chomp!
和strip!
都是为了就地修改字符串,而不是忽略错误,它们会返回nil
。
最好的方法是检查文本的存在(不是oneliner,思考):
txt = recPage.css("#MainContent_GridView1").css("tr")[line].css("td")[2].text
txt = txt.chomp.strip if txt
在ruby 2.3+中你可以使用:
recPage.css("#MainContent_GridView1").css("tr")[line].css("td")[2].text&.chomp.&strip
rescue ""
- 方法可能导致将来出现错误(如果此行中还有其他错误)
答案 2 :(得分:0)
如果你真的想要破坏性地做,你可以这样做:
...text&.tap(&:chomp!)&.tap(&:strip!)