如何解决如何尝试〜除了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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。