我正在用漂亮的汤抓取espn的统计数据,试图创建这样的东西
球员,团队,GP,G,A,PTS,+/-,PIM,PTS/G,SOG,PCT,GWG,G,A,G,A, Patrick Kane,RW,CHI,82,46,60,106,17,30,1.29,287,16.0,9,17,20,0,0 杰米·本,LW,DAL,82,41,48,89,7,64,1.09,247,16.6,5,17,13 2 3 Sidney Crosby,C,PIT,80,36,49,85,19,42,1.06,248,14.5,9,10,14,0,0
到目前为止,我已经得到了一些东西,可以遍历并提取所有的数据,但是它都是一个列,没有逗号和头
import urllib2
from bs4 import BeautifulSoup
url = "http://www.espn.com/nhl/statistics/player/_/stat/points"
page = urllib2.urlopen(url)
f = open('nhlstarter.txt', 'w')
soup=BeautifulSoup(page, "html.parser")
for tr in soup.select("#my-players-table tr[class*=player]"):
for ob in range(1,15):
player_info = tr('td')[ob].get_text(strip=True)
print(player_info)
f.write(player_info + '\n')
f.close()这是
Patrick Kane, RW
CHI
82
46
60
106
17
30
1.29
287
16.0
9
17
20等
如何将列数据转换为可用的行?我想我也许能做以下几件事:
for tr in soup.select("#my-players-table tr[class*=player]"):
for ob in range(1,15):
player_info + str(ob) = tr('td')[ob].get_text(strip=True)
print(player_info + str(ob))
f.write(player_info + str(ob) "," + player_info + str(ob) '\n')但这很不幸地失败了,因为它没有通过循环适当地增加变量
任何关于如何一次抓取表中的所有列或循环通过以获得可用的csv的任何建议都将不胜感激。
谢谢你的帮助
发布于 2016-10-03 04:19:27
您可以将播放机信息最初添加到列表中以表示行,然后在将该列表写入文件时将其加入到字符串中:
for tr in soup.select("#my-players-table tr[class*=player]"):
row = []
for ob in range(1,15):
## -- Assuming player_info has the column data
player_info = tr('td')[ob].get_text(strip=True)
row.append(player_info)
f.write(",".join(row) + "\n")https://stackoverflow.com/questions/39823864
复制相似问题