Я новичок в использовании BeautifulSoup, и я стараюсь использовать его для сбора некоторых тестовых данных с NHL.com. Вот мой код до сих пор, но я довольно потерянный ...Красивые супы Извлечение данных После href (не url)
Вот отрывок из HTML-кода, который я хочу, чтобы извлечь данные из:
<tr>
<td rowspan="1" colspan="1"> … </td>
<td style="text-align: left;" rowspan="1" colspan="1">
<a href="/ice/player.htm?id=8474564">
Steven Stamkos
</a>
</td>
<td style="text-align: center;" rowspan="1" colspan="1">
<a href="javascript:void(0);" rel="TBL" onclick="loadTeamSpotlight(jQuery(this));" style="border-bottom:1px dotted;">
TBL
</a>
</td>
<td style="text-align: center;" rowspan="1" colspan="1">
C
</td>
<td style="center" rowspan="1" colspan="1">
16
</td>
<td style="center" rowspan="1" colspan="1">
14
</td>
<td style="center" rowspan="1" colspan="1">
9
</td>
Я хотел бы извлечь данные из этих полей для всей страницы, поэтому существует около 30 различных строк таблицы. Вот мой код Python до сих пор, я не совсем уверен, куда идти.
from bs4 import BeautifulSoup
import requests
r = requests.get("http://www.nhl.com/ice/playerstats.htm?fetchKey=20142ALLSASAll&viewName=summary&sort=points&pg=1")
data = r.text
t_data=[]
soup = BeautifulSoup(data)
table = soup.find('table', {'class': 'data stats'})
Я знаю, что это не так много, но я понятия не имею, как это сделать. Спасибо за помощь всем
EDIT: Я решил проблему, и, надеюсь, это поможет любому в будущем. Вот мой код:
from bs4 import BeautifulSoup
import requests
r = requests.get("http://www.nhl.com/ice/playerstats.htm?fetchKey=20142ALLSASAll&viewName=summary&sort=points&pg=1")
player=[]
team=[]
goals=[]
assists=[]
cells=[]
points=[]
i=0
data = r.text
soup = BeautifulSoup(data)
table = soup.find('table', {'class': 'data stats'})
row=[]
for rows in table.find_all('tr'):
cells=rows.find_all('td')
if(len(cells)==19):
player.append(cells[1].find(text=True))
team.append(cells[2].find(text=True))
goals.append(cells[5].find(text=True))
assists.append(cells[6].find(text=True))
points.append(cells[7].find(text=True))
print(player[i],team[i],goals[i],assists[i],points[i])
i=i+1
Спасибо за ваш ответ! – billatron
@ user1831135 Не забудьте закрыть вопрос [accepting] (http://stackoverflow.com/help/accepted-answer) и отложить ответ, если он сработает для вас. – Sudipta