【发布时间】:2017-11-16 19:02:12
【问题描述】:
我正在尝试将“游戏 ID”列添加到我正在抓取的表中(请参阅下面的脚本)。我不确定在哪里添加 pd.Dataframe 以及调用什么(在我的网络抓取中),以便我可以在将脚本写入 csv 文件之前插入一个名为“游戏 ID”的新列(以便它写入带有刮擦的新游戏 id 列)。
(只是一些背景信息:“游戏 id”是循环中的 i,抓取从 url 迭代)
我试过输入
- df.insert(0, 'GameID', range(1, 1 + len(df))) 或
- df['GameID']= (df.index / 18 + 1).astype(int)
但我不知道如何调用我的数据框(我试过 pd.Dataframe[table, columns = 'cols] 但它不会读取它)。
#ALL HOME GOALIES GAME STATS
import requests
from bs4 import BeautifulSoup
import pandas as pd
import csv
f = open('HOME_GOALIES_ALL.csv', 'a', newline = '')
writer = csv.writer(f)
GameID = i
for i in range (400961844,400961845):
url = requests.get("http://www.espn.com/nhl/boxscore?gameId={}".format(i))
if not url.ok:
continue
data = url.text
soup = BeautifulSoup(data, 'lxml')
table = soup.find_all('table', {'class' : 'mod-data'})[8].find_all('tr')[2:]
for row in table:
cols = row.findChildren(recursive=False)
cols = [ele.text.strip() for ele in cols]
writer.writerow(cols)
【问题讨论】:
-
我在您的代码中的任何地方都没有看到数据框?你想做一个吗?
标签: python pandas beautifulsoup