python3.x - python 如何优雅的处理大量异常语句?
高洛峰
高洛峰 2017-04-18 09:03:01
0
5
424

我需要用bs4来分析一个html,需要写很多 提取语句,大概几十条,格式如下

twitter_url = summary_soup.find('a','twitter_url').get('href')
facebook_url = summary_soup.find('a','facebook_url').get('href')
linkedin_url = summary_soup.find('a','linkedin_url').get('href') 
name = summary_soup.find('p', class_='name').find('a').string

但是每个语句都有可能出异常,如果每个语句都加上try except 就太繁琐了,有没有什么好的方法处理每条语句,出异常赋值为None,不中断程序

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(5)
左手右手慢动作

質問のコメントで小さな質問をしましたが、答えていただければ、皆さんのニーズが理解しやすくなります。

あまり考えず、get のときに発生する可能性のあるエラーを回避したい場合は、対処すべき奇妙な状況がそれほど多くない場合は、もっとステルス的な方法があります。試してみてください:

リーリー

bs の find が見つからなかった場合は return None になります。このとき、or が失敗しないように get を使用してトリックを完成させます。辞書の get と bs タグの get の同様の機能を使用することで、例外を処理し、値を None として変数に代入できます。

よりしっかりと書きたい場合は、@prolifes の提案を参考にするのが非常に役立ちます。

下の誰かが、ニワトリが find ならどうやって盗むのかと尋ねたので、私はこうやって覗いてみました。ニワトリを盗むコツは 假資料 です:

リーリー

結果:

リーリー

チキンを盗むことに成功しました!


私が回答した質問: Python-QA

いいねを押す +0
大家讲道理

これは例外が多いという問題ではなく、次のような大胆な推測をしてみます。

twitter_url = summary_soup.find('a','twitter_url').get('href')

考えられるエラーの理由は次のとおりです: summary_soup.find('a','twitter_url') この文では要素が見つからず、None が返されました。その後、この None を使用して get('href') を呼び出した場合、それはエラー。

これが理由の場合は、次の 2 つの段落に分けて書くと対処しやすくなります。

リーリー
いいねを押す +0
Ty80

BS4のチェーンコールがとても良かったのでスープを包みました

リーリー

@prolifes を参照

いいねを押す +0
左手右手慢动作

エラーが報告される可能性があるメソッドをカスタマイズし、メソッド内で試してください

いいねを押す +0
PHPzhong

HTML の記述を分析する場合、あらゆる例外が発生する可能性があります。これは HTML の記述を分析する際に問題となります。HTML を分析するときは、できる限り包括的になり、すべての分析ステートメントを除いて試行し、エラーをキャプチャして書き込みます。より多くのページがキャプチャされると、エラーがない場合にのみ、分析ステートメントが適切に記述されたことを意味します

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート