首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >美汤对战espn

美汤对战espn
EN

Stack Overflow用户
提问于 2016-10-03 02:33:47
回答 1查看 122关注 0票数 0

我正在用漂亮的汤抓取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

到目前为止,我已经得到了一些东西,可以遍历并提取所有的数据,但是它都是一个列,没有逗号和头

代码语言:javascript
复制
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()

这是

代码语言:javascript
复制
Patrick Kane, RW
CHI
82
46
60
106
17
30
1.29
287
16.0
9
17
20

如何将列数据转换为可用的行?我想我也许能做以下几件事:

代码语言:javascript
复制
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的任何建议都将不胜感激。

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-03 04:19:27

您可以将播放机信息最初添加到列表中以表示行,然后在将该列表写入文件时将其加入到字符串中:

代码语言:javascript
复制
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")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39823864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档