所以我拉动了NFL球员的统计数据。该表仅显示最多50行,因此我必须将其过滤以确保我不会错过任何统计信息,这意味着我会遍历页面以按季度收集所有数据,按位置,按周,团队。
我想出了网址如何变化以循环使用这些网页,但迭代过程需要很长时间,并且在想:我们能够同时打开多个网页,我无法做到并行运行这些进程,每个进程同时从每个页面收集数据,将其存储在temp_df中,然后在最后将它们全部合并...而不是收集一个url,一个url,然后合并,然后是下一个url,然后合并,然后接下来,......一次。这意味着迭代6,144次(如果我没有遍历位置),但是这些位置超过36,000次迭代。
但我仍然坚持如何实施它,或者它是否可能。
这是我目前正在使用的代码。我通过位置消除了循环,只是想知道它的工作方式,对于四分卫来说,p = 2。
所以它开始于2005赛季= 1,球队1 = 1,第1周= 0,然后迭代所有那些到2016年的最后一个赛季= 12,球队32 = 33,第16周= 17:
import requests
import pandas as pd
seasons = list(range(1,13))
teams = list(range(1,33))
weeks = list(range(0,17))
qb_df = pd.DataFrame()
p = 2
for s in seasons:
for t in teams:
for w in weeks:
url = 'https://fantasydata.com/nfl-stats/nfl-fantasy-football-stats.aspx?fs=2&stype=0&sn=%s&scope=1&w=%s&ew=%s&s=&t=%s&p=%s&st=FantasyPointsFanDuel&d=1&ls=FantasyPointsFanDuel&live=false&pid=true&minsnaps=4' % (s,w,w,t,p)
html = requests.get(url).content
df_list = pd.read_html(html)
temp_df = df_list[-1]
temp_df['NFL Season'] = str(2017-s)
qb_df = qb_df.append(temp_df, ignore_index = True)
file = 'player_data_fanduel_2005_to_2016_qb.xls'
qb_df.to_excel(file)
print('\nData has been saved.')
答案 0 :(得分:1)
答案 1 :(得分:1)
首先,您必须记住,某些服务器会识别来自IP的令人惊讶的负载并阻止您的访问(有自动执行此操作的互联网设备),因此您可能不想发出数百个请求并行。
如果您不使用Scrapy之类的内容,则无需采用多线程或多处理方式。您可能最好使用异步I / O. Python 3.5非常好地支持异步函数。它们非常容易使用。