Данные на странице [ определенно содержат таблицу, и вы анализируете заголовки столбцов и передаете их в CSV. Визуально эта таблица имеет 8 столбцов, но вы анализируете 9 заголовков. На данный момент вам, вероятно, следует go проверить ваши данные, чтобы увидеть, что вы нашли - это может быть не то, что вы ожидаете. Но ладно, вы go и проверьте, и вы видите, что один из них - это пробел столбца в таблице, который будет пустым или мусорным, и вы продолжаете.
Эти строки:
data_rows = soup.findAll('th')[2:] # skip the first 2 header rows
type(data_rows) # now we have a list of table rows
candidate_data = [[td.getText() for td in data_rows[i].findAll('td')]
for i in range(len(data_rows))]
найдите каждый <th>
экземпляр на странице, а затем каждый <td>
внутри каждого <th>
, и это то, где оно действительно сходит с рельсов. Я предполагаю, что вы не веб-разработчик, но таблицы и их подэлементы (строки aka <tr>
, заголовки aka <th>
и ячейки aka <td>
) используются на большинстве страниц для организации множества визуальных элементов и также иногда для организации табличных данных.
Угадайте, что? Вы нашли много таблиц, которые не являются этой визуальной таблицей, потому что вы искали всю страницу для <th>
элементов.
Я бы предложил вам предварительно отфильтровать использование всего soup
сначала найдя <table>
или <div>
, который содержит только интересующие вас табличные данные, а затем выполните поиск в этой области.