如何让 try ~ except in Python?

How to make try ~ except in Python?

仍然 Python 对我来说是一门难懂的语言..T_T 我真的需要你的帮助。

我正在尝试抓取某些网站。 网站 URL 末尾有四位数字,如下所示。

URL→http://www.boanjob.co.kr/work/employ_detail.html?no=**2196**

所以我编写了以下代码。

import pandas as pd
import datetime

df_list = [pd.read_html(f'http://www.boanjob.co.kr/work/employ_detail.html?no={number}')[25] for number in range(2196, 2300)

df = pd.concat(df_list).reset_index(drop=True)

df = df.transpose() #I have to change rows and columns.

df = df.dropna(axis=0, how='all').dropna(axis=1, how='all')
# df.columns = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']

print(df)

在 2196、2198、2199、2200 等中都很好用。

然而,2197 是一个不存在的页面,

因此它会发送一条错误消息并返回到主屏幕。

(For 循环结束于 2197。)

有没有办法跳过此页面上的工作

(出现错误信息的页面)并转到下一个数字 2198?

我对 Python 很困惑。

请再次帮助我...T_T

试试这个:

df_list = []
for number in range(2196, 2300):
    try:
        data = pd.read_html(f'http://www.boanjob.co.kr/work/employ_detail.html?no={number}')[25]
        df_list.append(data)
    except:
        print("An exception occurred")

您正在使用列表理解来构建 df_list。太好了,除非有错误。如果引发异常,列表将被丢弃,并且很难用下一个值重新启动它。在许多情况下,这是一件好事,但对您不利。相反,您应该使用 for 循环,让您在执行过程中从错误中恢复。

import pandas as pd
import datetime

df_list = []
for number in range(2196, 2300):
    try:
        url = f'http://www.boanjob.co.kr/work/employ_detail.html?no={number}' 
        df_list.append(pd.read_html(url))
    except (OSError, ValueError) as e: # note: there may be others
        print(f"Number {number} failed: {e}")

df = pd.concat(df_list).reset_index(drop=True)
del df_list # may as well get rid of the memory
df = df.transpose() #I have to change rows and columns.
df = df.dropna(axis=0, how='all').dropna(axis=1, how='all')
# df.columns = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
print(df)