2011-01-20 12 views
1

私はBeautifulSoupを使って、いくつかのサイトからHTMLを解析し、各サイトをGAEタスクキューに追加しています。しかし、タスクキューは2つのタスクを繰り返すようです。ApplicationError:5エラーがログに記録されるか、またはで失敗します。 'NoneType'オブジェクトには属性 'findAll'がありません。、美しいスープが私がそれを渡したページで何かを見つけられなかったとき。誰もが、私はそれを修正することができますので、間違っているものにと私にいくつかの提案を与えることができれば、私は思ったんだけどPythonでGoogle App EngineのHTMLをBeautifulSoupで解析していますか?

productTable = soup.find('table') 

      if productTable == None: 
       logging.error('Could not find the product table') 
       break 

      if productTable.findAll('table') == None: 
       logging.error('Product table was empty') 
       break 

:私は、しかし、これは問題を解決するためには表示されません。下のコードを追加しました。

+1

結果を 'None'と比較する適切な方法は、' None'がシングルトンで値ではないので、 'if blah is None'を使うことです。 –

+0

申し訳ありません、Pythonでコーディングを始めました4日前:)。だから、私はPythonがどのように扱われるかを理解するためのコーディング例を探していました。それは知ってよかった、ありがとう! – toofarsideways

答えて

2

アプリケーションエラーは、おそらく、HTMLを取得するためのurlfetchが失敗したことを示しています。タスクキューは、タスクが成功するまで自動的にタスクを再試行します(デフォルト設定で使用されている場合)。私はこのエラーについてあまり心配することはありませんが、それはしばらくの間しか起こらず、再試行された後に消えてしまいます。特定のタスクが繰り返し失敗した場合、フェッチしようとしているリソースに問題があると思われます。

productTableが使用される前にNoneではないことを最初に確認すると、'NoneType' object has no attribute 'findAll'エラーが発生しません。あなたのチェックが失敗しても、productTable.findallコールはバイパスされません。

関連する問題