我想遍历多个目录,每个目录在本地计算机上都包含一个HTML文件。我将每个文件的路径存储在一个list变量中,但是现在我想遍历每个文件并将其读入pd.read_html
之类的东西,以便从HTML文件中提取表信息。但是,某些文件不包含任何表,因此会引发错误ValueError: No tables found
。当然会出现此错误,我只需要跳过这些所需的逻辑帮助即可。
我已经尝试阅读pd.DataFrame
(在这里:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html)和pd.read_html
(在这里:https://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.read_html.html)文档,但是找不到逻辑正在寻找。
这是我到目前为止所做的
# initialize the path
p = Path('C:/path/to/directories/')
# glob all html file paths into list of paths
html_paths = [file for file in p.glob('**/*.html')]
因此,现在我有了一个要迭代并读入pd.read_html
的路径列表。我可以使用以下代码轻松做到这一点:
# initialize empty data frame to append pd.read_html() output to
html_files = pd.DataFrame()
# iterate over each file and read in using pandas
for p in html_paths:
html_files.append(pd.read_html(str(p)))
但是,由于我的一些html文件不包含任何表,因此当我的for循环遍历这些文件时,我得到一个错误。我希望有一种方法可以在读取它们时跳过没有表的这些文件,以便仅添加其余文件而不破坏代码。
答案 0 :(得分:1)
您可以简单地
for p in html_paths:
try:
html_files = html_files.append(pd.read_html(str(p)))
except ValueError:
pass