Я хочу перебрать несколько каталогов, каждый из которых содержит файл HTML на моем локальном компьютере. У меня есть пути для каждого файла, хранящиеся в переменной списка, но теперь я хочу перебрать каждый из них и прочитать его во что-то вроде 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 выполняет итерации по этим файлам. Я хотел бы пропустить эти файлы без таблиц при их чтении, чтобы он просто продолжал добавлять остальные файлы, а не нарушать код.