错误指向bs4源代码的这一行
我使用的是一个依赖BeautifulSoup的第三方模块。我用它来创建NBA球员个人数据的DataFrame,然后将它们拼接成一个大的DataFrame。下面代码中的列表comp适用于一些DF,但随后出现TypeError: object of type 'NoneType' has no len()
错误
相关代码:
import pandas as pd
from PandasBasketball.stats import player_stats
dfs = [player_stats(requests.get(url), "per_minute") for url in full_player_urls[600:]]
all_stats = pd.concat(dfs)
all_stats[::500]
我尝试过的东西:
- 检查
full_player_urls
是否正确生成。是的。它是一个URL列表,比如:http://www.basketball-reference.com/players/b/burrobo01.html
- 已验证
player_stats()
对URL是否正常工作:player_stats(requests.get('http://www.basketball-reference.com/players/b/bustida01.html'), "per_minute")
以上内容正确地生成了从该网页上的表生成的DataFrame。这是按预期进行的
我的猜测是,站点服务器意识到您在短时间内发出了许多请求,并且在循环的某个时刻阻止了您。有几件事你可以做。最简单的就是在每次迭代后放一点时间延迟。如果这不起作用,请告诉我,我们可以稍微解决一下:
import pandas as pd
from PandasBasketball.stats import player_stats
import time
import random
import requests
dfs = []
for url in full_player_urls[600:]:
dfs.append(player_stats(requests.get(url), "per_minute"))
x = random.uniform(0, 10)
time.sleep(x)
all_stats = pd.concat(dfs)
all_stats[::500]