【发布时间】:2018-05-17 14:19:06
【问题描述】:
我想使用 BeautifulSoup 从网站上抓取一些数据。数据在一个表中,其中不同的表行总共为 4 个不同的类。
<table class="timeteam">
<tbody>
<tr class="even"></tr>
<tr class="even smallrow"></tr>
<tr class="odd"></tr>
<tr class="odd smallrow"></tr>
</tbody>
</table>
“偶数”行和“奇数”行中的数据属于同一行。所以我想在 Dataframe 的末尾获取这两行(以及其他行)。
使用 find_all('tr', class_=['even', 'odd']) 我还得到了其他行(使用 smallrow)。因此我尝试了重新编译功能。但还是一样的结果。
我需要在我的代码中进行哪些更改以仅选择具有“偶数”和“奇数”类的行?
这是我的代码:
import requests
import re
import pandas as pd
from bs4 import BeautifulSoup as bs
page = request.get('https://regatta.time-team.nl/hollandia/2017/results/003.php')
soup = bs(page.content, 'html.parser')
tables = soup.find_all('table', class_='timeteam')
player_data_even = []
player_data_smallrow = []
for i in range(len(tables)):
for tr in tables[i].find_all('tr', class_ = re.compile(r"^(even|odd)$")):
player_row_even = []
for td in tr.find_all('td'):
player_row_even.append(td.get_text())
player_data_even.append(player_row_even)
for tr in tables[i].find_all('tr', class_=['even smallrow', 'odd smallrow']):
player_row_smallrow = []
for td in tr.find_all('td'):
player_row_smallrow.append(td.get_text())
player_data_smallrow.append(player_row_smallrow)
players_even = pd.DataFrame(player_data_even)
players_smallrow = pd.DataFrame(player_data_smallrow)
【问题讨论】:
标签: python class beautifulsoup find