如何让 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)
仍然 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)