繁体   English   中英

除了在 Python 中,如何尝试~?

[英]How to make try ~ except in Python?

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

我正在尝试抓取某个网站。 网站 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM