0

特定の Twitter ユーザー名のツイート数、フォロワー数、フォロー数を取得するはずのtwitter_user.rbに問題があります。

9行目を興味のあるTwitterのユーザー名に置き換えることになっているとTWITTER_USERNAME思います.私はそれをしてダッシュを始めましたが、得ました:

scheduler caught exception:
undefined method '[]' for nil:NilClass
/.../jobs/twitter_user.rb:19:in 'block in <top (required)>'

問題は次の 19 行目にあるようです。

tweets = /profile["']>[\n\t\s]*<strong>([\d.,]+)/.match(response.body)[1].delete('.,').to_i

何が起こっているのか、それを修正する方法を誰か教えてもらえますか?

4

4 に答える 4

0

これはテストされていないコードですが、どのように記述されるべきかという一般的な考え方です。元のページのソースを複製すると、目的に合わせて調整できます (つまり、修正できます)。

require 'nokogiri'

doc = Nokogiri::XML(content)

tweets = doc.at('profile strong').text.delete('.,').to_i
following = doc.at('following strong').text.delete('.,').to_i
followers = doc.at('followers strong').text.delete('.,').to_i

上記の 3 行は、次のように短縮できます。

tweets, following, followers = %w[profile following followers].map{ |tag|
  doc.at("#{ tag } strong").text.delete(',.').to_i
}

繰り返しになりますが、XML/HTML の使用可能なサンプルがなければ、これ以上のことはできません。これらのタイプのファイルのいずれかでパターンを破るのは非常に簡単です。

于 2013-11-11T16:41:58.620 に答える