#python #pandas
Вопрос:
Пример изображения того, что я хочу
Я пытался
import re from bs4
import BeautifulSoup
import pandas as pd
import csv
file = "<body><table class="gb-widget-data_table ext-widget-data_table ext-widget-data_table-striped">
<tbody>
<tr class="gb-widget-data_table_row_header ext-widget-data_table_row_header">
<td class="gb-widget-data_table_row_column_header ext-widget-data_table_row_column_header">ID</td>
<td class="gb-widget-data_table_row_column_header ext-widget-data_table_row_column_header">Date/Time</td>
<td class="gb-widget-data_table_row_column_header ext-widget-data_table_row_column_header">Results</td>
</tr>
<tr class="gb-widget-data_table_row ext-widget-data_table_row">
<td class="gb-widget-data_table_row_column ext-widget-data_table_row_column">16213393</td>
<td class="gb-widget-data_table_row_column ext-widget-data_table_row_column">03/07/2021 10:20</td>
<td class="gb-widget-data_table_row_column ext-widget-data_table_row_column gb-widget-data_table_row_column-small-paddings">
<div>
<div class="gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-blue_ball">
3
</div>
<div class="gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-yellow_ball">
2
</div>
<div class="gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-yellow_ball">
8
</div>
<div class="gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-yellow_ball">
20
</div>
<div class="gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-yellow_ball">
35
</div>
<div class="gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-red_ball">
10
</div>
</div>
</td>
</tr>
</tbody>
</table></body>"
soup = BeautifulSoup(file, 'html.parser')
match = soup.find_all('div', class_=re.compile('^gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-'))
match = soup.div
okays = match.find('div', class_=re.compile('^gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-'))
print(okays)
Ответ №1:
Вот один из способов, начиная с вашей match
линии. Вы можете вставить остальные столбцы, чтобы заполнить свой фрейм данных.
match = soup.find_all('div', class_=re.compile('^gb-widget-icon_container ext-widget-icon_container gb-widget-icon_container--small gb-widget-color_color-'))
res = []
for m in match:
# print(m.text.strip())
res.append([m.text.strip()])
cols=['Results1','Results2','Results3','Results4','Results5','Results6']
pd.DataFrame(dict(zip(cols,res)))
Выход:
Results1 Results2 Results3 Results4 Results5 Results6
0 3 2 8 20 35 10
Комментарии:
1. Большое спасибо, братан, я действительно ценю
2. Рад помочь. Если вы можете принять ответ, это было бы здорово
3. У меня есть, они говорят, что мне нужно не менее 15 репутации, я только что присоединился к переполнению стека из-за этой проблемы, которая у меня была
4. Однако как мне получить репутацию 15?