pandas парсинг htlm таблицы
Есть HTML файл из таблицами. Их приблизительно 100шт. и у всех часто одинаковые значения. Нестатическими являются значения во втором и первом столбце всех таблиц (это те колонки, с которыми я буду работать в будущем):
Вот это HTML код любой строчки в таблице. Они все одинаковы, для примера взята 1 строчка из первой таблицы на скрине сверху:
<tr>
<td class="randomclass">1project</td>
<td class="randomclass"> <font color="#00875a"><b>ID1</b></font></td>
<td class="randomclass"><font color="#00875a"> <b>EMPTY_ROW</b></font></td>
<td class="randomclass">EMPTY_ROW</td>
</tr>
Я ищу метод, с помощью которого я:
- вытащу из всех таблиц только зеленые значения (игнорируя ID_TEMP1, ID_TEMP2, ID_TEMP3)
- смогу игнорировать маленькие таблицы с "ID_Review" значением.
Вот мой код:
import pandas as pd
cons = pd.DataFrame()
all_HOs = pd.DataFrame()
ids_cons = pd.DataFrame()
df_list = pd.read_html('Production Issue Tracking.html', match='ID')
df_list2 = pd.read_html('Production Issue Tracking.html', match='Attachments')
df_list3 = pd.read_html('Production Issue Tracking.html', match='number')
df3 = pd.concat(df_list3, axis=1)
df3 = df3.iloc[:, ::-1]
df = pd.concat(df_list, axis=1)
df2 = pd.concat(df_list2, axis=1)
df_rev = df.iloc[:, ::-1]
df2 = df2.iloc[:, ::-1]
df_rev.columns = df_rev.iloc[0]
lc = df_rev[["STATIC"]]
lc = pd.DataFrame({"STATIC: df_rev["Review"].values.T.ravel(),})
lc = lc[lc['STATIC'] != 'STATIC']
lc = lc[lc['STATIC'] != 'Review']
sup = df_rev[["IDs"]]
sup = pd.DataFrame({"IDs": df_rev["IDs"].values.T.ravel(),})
sup = sup[sup['IDs'] != 'IDs']
lc_sup = pd.concat([lc, sup], axis=1)
lc_sup DF в екселе:
EMPTY_ROW EMPTY_ROW
1project ID1
2project ID2
3project ID3 ID_TEMP1
4project ID4
5project ID5
6project ID6
7project ID7 ID_TEMP2
8project ID8
9project ID9
10project ID10 ID_TEMP3
Project1
Project2
Project3
Project4
Project5
Project6
Project7
Project8
Project9
Project10
По идее, вот эта строчка:
lc = lc[lc['STATIC'] != 'ID_Review']
должна убирать ненужные строчки в lc_sup DF, но проблема в том, что значение в этой строчке почти всегда разные, и мне никак не получается игнорировать их все. В примере сверху у меня получилось игнорировать "ID_Review", но если это будет любое другое значение, то оно появится как новая строчка в DF.
Я думал собрать все значения их маленьких таблиц, перенести их в список и уже потом их всех игнорировать, но в этих таблицах чаще всего новые значение и в этому случае мне придется все время их добавлять в код для того, чтобы игнорировать в будущем.
