Вам не нужен этот большой round
, вы можете легко использовать функцию pandas.read_html()
, чтобы прочитать ее в table
согласно вашему запросу. и затем вы можете преобразовать его в dict
, используя также pandas.to_dict()
функцию:
import pandas as pd
table = """
<table log-set-param="table_view" class="ddtable qytable"><tbody>
<tr><th>Game_name</th><th>date</th><th>team</th><th>score</th><th>opponent</th><th>starting</th><th>play</th><th>scoring</th><th>warning</th><th>details</th><th>-</th></tr>
<tr>
<td align="center" valign="middle"><a target="_blank" href="/item/%E8%8B%B1%E8%B6%85">Premier_leagure</a></td>
<td align="center" valign="middle">11-19 23:00</td><td align="center" valign="middle"><a target="_blank" href="/item/%E6%96%AF%E6%89%98%E5%85%8B%E5%9F%8E">Stoke_city</a></td>
<td align="center" valign="middle"><b>0 - 1</b></td><td align="center" valign="middle"><a target="_blank" href="/item/%E4%BC%AF%E6%81%A9%E8%8C%85%E6%96%AF">Nournemouth</a></td>
<td align="center" valign="middle">Yes</td><td align="center" valign="middle">68’</td>
<td align="center" valign="middle">0</td><td align="center" valign="middle">-</td>
<td align="center" valign="middle">-</td><td align="center" valign="middle"><a target="_blank" href="/item/%E8%AF%A6%E6%83%85">detail</a></td>
</tr
"""
df = pd.read_html(table)[0]
print(df)
df.to_csv("Data.csv", index=False)
Вывод: просмотр онлайн
И преобразовать его в dict
:
target = df.to_dict()
print(target)
Вывод:
{'Game_name': {0: 'Premier_leagure'}, 'date': {0: '11-19 23:00'}, 'team': {0: 'Stoke_city'}, 'score': {0: '0 - 1'}, 'opponent': {0: 'Nournemouth'}, 'starting': {0: 'Yes'}, 'play': {0: '68’'}, 'scoring': {0: 0}, 'warning': {0: '-'}, 'details': {0: '-'}, '-': {0: 'detail'}}
Примечание: Относительно вашей точки Also, how to make sure the 'href='#5' linked to the table
:
Есть 2
методы:
- для использования функции
pandas.read_html()
вместе с attrs=
, как показано ниже:
Здесь мы использовали атрибут table
.
<table log-set-param="table_view" class="ddtable qytable"><tbody>
Итак:
df = pd.read_html(table, attrs={'log-set-param': 'table_view', 'class': 'ddtable qytable'})[0]
второй метод, используя ваш прекрасный
href="#5
, мы будем использовать
bs4
: P
Поэтому мы сначала найдем его, а затем получим для него следующий table
.
element = soup.find("a", href="#5").find_next("table")
df = pd.read_html(str(element))[0]
print(df)