私のコードは正常に動作していますが、PyCharmは次の点でexcept
節について警告しています。正直なところ、間違った実装として私にも匂いがする。Python:私のexcept節は実際には広すぎますか?
HTML <tr>
を一括して掻き集めると、データベースやアップデートに追加する必要があります。ゲームが終了したかどうかは事前にわかりません。また、完了していないゲームでは、異なるハンドリングが必要な、いくつかのHTMLタグがあります(<td>
)。
基本的にmatch_score_string
とmatch_relevant_bit
を見ると、BeautifulSoupに特定のクラスの<td>
が見つかっています。ゲームが既に終了している場合、この<td>
はscore-time sc
クラスになります。そうでなければ、score-time st
クラスになります。それがある場合、それは他を持っていません。
それは私がtry-except
句を書いてからしばらくして、私が正しくリコール場合BSはエラーをスローし、row.find
はHTMLを見つけるために失敗したときにすべての操作を停止してしまうようなので、私はそれらを使用しなければならなかった理由は(私が感じた)であるですオブジェクト。
PyCharmは正当に不平を言っていますか?
# Get Match Score
try:
match_score_string = row.find("td", class_="score-time sc").get_text()
match_string_split = match_score_string.split(" - ")
team_a_score = int(match_string_split[0])
team_b_score = int(match_string_split[1])
print(team_a_score)
print(team_b_score)
except:
team_a_score = None
team_b_score = None
# Get Match URL
try:
match_relevant_bit = row.find("td", class_="score-time sc")
match_url = match_relevant_bit.find("a").get("href")
match_url_done = match_url.rsplit('?JKLMN')
match_url = match_url_done[0]
match_finished = True
except:
match_relevant_bit = row.find("td", class_="score-time st")
match_url = match_relevant_bit.find("a").get("href")
match_url_done = match_url.rsplit('?JKLMN')
match_url = match_url_done[0]
match_finished = False
別のケースは、この種のtryブロックで呼び出されたときに動作しない 'sys.exit()'です。 –
@JossefHarush - もちろんです。あるいは 'assert'ステートメントや...何かに失敗しました。 :-) – mgilson
'try'節のコードで発生した例外を具体的に処理するのではなく、' KeyboardInterrupt'や 'RuntimeError'のような外部例外を処理する方法についてどう思いますか?伝統的な例外処理は、 '' try'( "find"や不可能なint型キャストのような)で "直接"引き起こされたエラーを処理することですが、OPはこれらの例外をすべて同じ方法で処理したいと考えていますあなたが書いたように、 'KeyboardInterrupt'のような外部例外は、別の注意で扱われるべきです。 –