为什么 mechanize 在我的 page2.links.each 方法链上引发 NoMethodError?
Why does mechanize raise NoMethodError on my page2.links.each method chain?
错误
mySpiderScript.rb:119:in ` block (3 levels) in <main>': undefined method `links' for #<Mechanize::Image:0x120a7e38> (NoMethodError)
代码
agent2 = Mechanize.new
page2 = agent2.get('http://www.mywebsite.net')
page2.links.each do |link2| #line 119
name = link2.href.to_s
我该如何解决这个问题,以便脚本保持 运行?
更新
这是 page2.body returns.
����JFIF���ICC_PROFILE�lcms0mntrRGB XYZ �*acspAPPL���-lcms
desc8cprt@Nwtpt�chad�,rXYZ�bXYZ�gXYZ�rTRC
gTRC, bTRCL chrml$mluc
enUSsRGB built-inmluc
enUS2No copyright, use freelyXYZ ���-sf32
Y� J����*��������������XYZ o�8��XYZ $����XYZ b����paraff��
Y�raff��
Y�raff��
[chrm��T{L���&f\��
$.' ",#(7),01444'9=82<.342��C
2!!22222222222222222222222222222222222222222222222222��"����������
?����
来自:
[T]he body is not a valid mechanize object. How to skip it?
在尝试对对象调用方法之前,有很多方法可以验证您的对象。一种方法是使用 Ruby 2.3.0 中引入的记录不完整的 safe navigation operator (&.
)。例如,使用您现有的代码:
page2&.links&.each do |link2|
如果 page2 中的对象不响应#links,或者 page2.links
的结果不响应,这将 return nil #每个。然后,程序流将在您的 page2&.links&.each
方法链形成的 #each 块之后继续。
错误
mySpiderScript.rb:119:in ` block (3 levels) in <main>': undefined method `links' for #<Mechanize::Image:0x120a7e38> (NoMethodError)
代码
agent2 = Mechanize.new
page2 = agent2.get('http://www.mywebsite.net')
page2.links.each do |link2| #line 119
name = link2.href.to_s
我该如何解决这个问题,以便脚本保持 运行?
更新
这是 page2.body returns.
����JFIF���ICC_PROFILE�lcms0mntrRGB XYZ �*acspAPPL���-lcms
desc8cprt@Nwtpt�chad�,rXYZ�bXYZ�gXYZ�rTRC
gTRC, bTRCL chrml$mluc
enUSsRGB built-inmluc
enUS2No copyright, use freelyXYZ ���-sf32
Y� J����*��������������XYZ o�8��XYZ $����XYZ b����paraff��
Y�raff��
Y�raff��
[chrm��T{L���&f\��
$.' ",#(7),01444'9=82<.342��C
2!!22222222222222222222222222222222222222222222222222��"����������
?����
来自
[T]he body is not a valid mechanize object. How to skip it?
在尝试对对象调用方法之前,有很多方法可以验证您的对象。一种方法是使用 Ruby 2.3.0 中引入的记录不完整的 safe navigation operator (&.
)。例如,使用您现有的代码:
page2&.links&.each do |link2|
如果 page2 中的对象不响应#links,或者 page2.links
的结果不响应,这将 return nil #每个。然后,程序流将在您的 page2&.links&.each
方法链形成的 #each 块之后继续。