我需要用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,不中断程序
質問のコメントで小さな質問をしましたが、答えていただければ、皆さんのニーズが理解しやすくなります。
あまり考えず、
リーリーget
のときに発生する可能性のあるエラーを回避したい場合は、対処すべき奇妙な状況がそれほど多くない場合は、もっとステルス的な方法があります。試してみてください:bs の
find
が見つからなかった場合はreturn None
になります。このとき、or
が失敗しないようにget
を使用してトリックを完成させます。辞書のget
と bs タグのget
の同様の機能を使用することで、例外を処理し、値をNone
として変数に代入できます。よりしっかりと書きたい場合は、@prolifes の提案を参考にするのが非常に役立ちます。
下の誰かが、ニワトリが
リーリーfind
ならどうやって盗むのかと尋ねたので、私はこうやって覗いてみました。ニワトリを盗むコツは假資料
です:結果:
リーリーチキンを盗むことに成功しました!
私が回答した質問: Python-QA
これは例外が多いという問題ではなく、次のような大胆な推測をしてみます。
twitter_url = summary_soup.find('a','twitter_url').get('href')
考えられるエラーの理由は次のとおりです:
summary_soup.find('a','twitter_url')
この文では要素が見つからず、None
が返されました。その後、このNone
を使用してget('href')
を呼び出した場合、それはエラー。これが理由の場合は、次の 2 つの段落に分けて書くと対処しやすくなります。
リーリーBS4のチェーンコールがとても良かったのでスープを包みました
リーリー@prolifes を参照
エラーが報告される可能性があるメソッドをカスタマイズし、メソッド内で試してください
HTML の記述を分析する場合、あらゆる例外が発生する可能性があります。これは HTML の記述を分析する際に問題となります。HTML を分析するときは、できる限り包括的になり、すべての分析ステートメントを除いて試行し、エラーをキャプチャして書き込みます。より多くのページがキャプチャされると、エラーがない場合にのみ、分析ステートメントが適切に記述されたことを意味します