Pandas to_csv多页

时间:2017-05-17 19:01:28

标签: python csv pandas bs4

所以到目前为止,我已经最终想出了如何将数据写入数据帧,但我对编程很新,并且认为某些东西不应该在这个循环中因此问题..

所以我想做的是从http://rotoguru1.com/cgi-bin/byday.pl?game=dk

拉取棒球数据

格式化对于df是正确的但我有一些问题。 1.)我在页面抓取的for循环中写了csv,我想我必须拿出来?我是否只是在将信息写入csv之前创建一个新变量来存储信息? 2.)分页按日期进行,所以我只是在范围内(410,518)为i尝试获得4月到10月之间的所有日期。但是显然它只是增加到第30天并且一直到99所以我没有看到任何数据。

无论这里是我到目前为止的代码......我是新手,所以请放轻松我:P

for i in range(410, 518):
    r = requests.get("http://rotoguru1.com/cgi-bin/byday.pl?date={}&game=dk".format(i))

    soup = bs.BeautifulSoup(r.content,"lxml")
    table = soup.find_all('tr')[9]
    headers = [th.getText().replace('\xa0', '') for th in table]
    headers.insert(0,'Position')

    data_rows = soup.find_all('tr')[10:430]
    player_data = [[td.getText().replace('\xa0', '') for td in data_rows[i].find_all('td')] for i in range(len(data_rows))]

    df = pd.DataFrame(player_data, columns=headers)
    df.to_csv("testingbaseball.csv")

1 个答案:

答案 0 :(得分:0)

这是你想要的吗?

import os
path = 'testingbaseball.csv'
if not os.path.exists(path):
    df.to_csv('testingbaseball.csv')
else:
    df.to_csv('testingbaseball.csv', mode='a', header=False)

这样您就可以继续将新数据添加到csv数据文件中。