Python 能够浏览网站';NBA每日领袖的数据。但是MaxRetryError的问题
我正在尝试为类创建一个程序,并且正在努力,它在某一点上是有效的,但我有一种感觉,我可能已经将自己列入黑名单,因为我在执行代码时遇到了MaxRetryError url:/session/535f3b31b6b76ca10ea210f69675563e/url超过了最大重试次数(由NewConnectionError引起)(':未能建立新连接:[WinError 10061]无法建立连接,因为目标计算机主动拒绝了它 我想知道我的代码是否能在别人的机器上运行哈哈:D 因此,我的代码的jist是,将向用户询问格式为yyyy mm dd的日期,然后使用该日期查找与该日期相关的所有框分数 这就是让我悲伤的功能Python 能够浏览网站';NBA每日领袖的数据。但是MaxRetryError的问题,python,selenium,web-scraping,beautifulsoup,Python,Selenium,Web Scraping,Beautifulsoup,我正在尝试为类创建一个程序,并且正在努力,它在某一点上是有效的,但我有一种感觉,我可能已经将自己列入黑名单,因为我在执行代码时遇到了MaxRetryError url:/session/535f3b31b6b76ca10ea210f69675563e/url超过了最大重试次数(由NewConnectionError引起)(':未能建立新连接:[WinError 10061]无法建立连接,因为目标计算机主动拒绝了它 我想知道我的代码是否能在别人的机器上运行哈哈:D 因此,我的代码的jist是,将向
def main():
displayNames(getStats(get_Games(get_Date())))
def getStats(list_link):
options = webdriver.ChromeOptions()
options.headless = True
options.add_experimental_option('useAutomationExtension', False)
options.add_argument("--headless")
options.add_argument("--window-size=1920,1080")
options.add_argument("--no-sandbox")
options.add_argument("--disable-extensions")
options.add_argument("--dns-prefetch-disable")
driver = webdriver.Chrome(options = options)
driver.implicitly_wait(15)
player_names = list()
pts_scored = list()
boards = list()
assists = list()
blocks = list()
steals = list()
for link in list_link:
driver.get(link)
player = 1
while True:
try:
print(player)
player_names.append(driver.find_element_by_xpath('//*[@id="__next"]/div[2]/div[4]/section[2]/div[2]/div[2]/div/table/tbody/tr[{}]/td[1]/div/a/span/span[1]'.format(player)).text)
pts_scored.append(driver.find_element_by_xpath('//*[@id="__next"]/div[2]/div[4]/section[2]/div[2]/div[2]/div/table/tbody/tr[{}]/td[20]'.format(player)).text)
# boards.append(driver.find_element_by_xpath('//*[@id="__next"]/div[2]/div[4]/section[2]/div[2]/div[2]/div/table/tbody/tr[{}]/td[20]'.format(player)).text)
# assists.append(driver.find_element_by_xpath('//*[@id="__next"]/div[2]/div[4]/section[2]/div[2]/div[2]/div/table/tbody/tr[{}]/td[20]'.format(player)).text)
# blocks.append(driver.find_element_by_xpath('//*[@id="__next"]/div[2]/div[4]/section[2]/div[2]/div[2]/div/table/tbody/tr[{}]/td[20]'.format(player)).text)
# steals.append(driver.find_element_by_xpath('//*[@id="__next"]/div[2]/div[4]/section[2]/div[2]/div[2]/div/table/tbody/tr[{}]/td[20]'.format(player)).text)
player = player + 1
time.sleep(5)
except NoSuchElementException:
break
driver.quit()
pts_scored = [int(s) for s in pts_scored]
# boards = [int(s) for s in boards]
# assists = [int(s) for s in assists]
# blocks = [int(s) for s in blocks]
# steals = [int(s) for s in steals]
return pd.DataFrame(list(zip(player_names, pts_scored)), columns=['Name', 'PTS'])
在我去其他地方之前,我只是想测试一下你得到的分数。我有另一个函数,它基本上返回数据帧的最大值,让这个人得到最多的分数。如果你需要更多的代码,请告诉我
此外,如果我被列入黑名单,我想知道是否有一个nba_api我可以使用或一些python包,将做类似的事情,似乎应该有一个,但我找不到任何除了赛季统计数据等。没有每日领导人。如果需要,我愿意改变我的路线
下面是列表中链接的两个示例的一些示例
有一个api。只需使用gameid,然后您就可以随心所欲地解析json。例如:
import requests
import pandas as pd
#url = 'https://stats.nba.com/stats/boxscorescoringv3'
url = 'https://stats.nba.com/stats/boxscoretraditionalv3'
headers = {
'Referer': 'https://www.nba.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'}
payload = {
'GameID': '0022000911',
'LeagueID': '00',
'endPeriod': '0',
'endRange': '28800',
'rangeType': '0',
'startPeriod': '0',
'startRange': '0'}
jsonData = requests.get(url, headers=headers, params=payload).json()
#away_df = pd.json_normalize(jsonData['boxScoreScoring']['awayTeam']['players'])
#home_df = pd.json_normalize(jsonData['boxScoreScoring']['homeTeam']['players'])
away_df = pd.json_normalize(jsonData['boxScoreTraditional']['awayTeam']['players'])
home_df = pd.json_normalize(jsonData['boxScoreTraditional']['homeTeam']['players'])
输出:
print(away_df.to_string())
personId firstName familyName playerSlug position comment statistics.minutes statistics.percentageFieldGoalsAttempted2pt statistics.percentageFieldGoalsAttempted3pt statistics.percentagePoints2pt statistics.percentagePointsMidrange2pt statistics.percentagePoints3pt statistics.percentagePointsFastBreak statistics.percentagePointsFreeThrow statistics.percentagePointsOffTurnovers statistics.percentagePointsPaint statistics.percentageAssisted2pt statistics.percentageUnassisted2pt statistics.percentageAssisted3pt statistics.percentageUnassisted3pt statistics.percentageAssistedFGM statistics.percentageUnassistedFGM
0 1628369 Jayson Tatum jayson-tatum F 32:15 0.688 0.313 0.526 0.105 0.158 0.105 0.316 0.158 0.421 0.200 0.800 1.000 0.000 0.333 0.667
1 1627759 Jaylen Brown jaylen-brown F 34:50 0.682 0.318 0.600 0.000 0.300 0.100 0.100 0.200 0.600 0.167 0.833 1.000 0.000 0.375 0.625
2 202684 Tristan Thompson tristan-thompson C 25:39 1.000 0.000 0.800 0.000 0.000 0.000 0.200 0.000 0.800 0.000 1.000 0.000 0.000 0.000 1.000
3 203935 Marcus Smart marcus-smart G 30:22 0.364 0.636 0.235 0.000 0.529 0.235 0.235 0.294 0.235 0.500 0.500 1.000 0.000 0.800 0.200
4 202689 Kemba Walker kemba-walker G 29:29 0.471 0.529 0.400 0.100 0.450 0.350 0.150 0.000 0.300 0.250 0.750 0.667 0.333 0.429 0.571
5 203095 Evan Fournier evan-fournier 19:48 0.333 0.667 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
6 203953 Jabari Parker jabari-parker 11:33 0.667 0.333 0.500 0.000 0.000 0.000 0.500 0.000 0.500 1.000 0.000 0.000 0.000 1.000 0.000
7 1630202 Payton Pritchard payton-pritchard 15:34 0.333 0.667 0.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
8 1629684 Grant Williams grant-williams 18:49 0.000 1.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 1.000 0.000
9 1630174 Aaron Nesmith aaron-nesmith 8:01 0.333 0.667 0.000 0.000 0.600 0.000 0.400 0.000 0.000 0.000 0.000 1.000 0.000 1.000 0.000
10 1628436 Luke Kornet luke-kornet 3:25 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
11 1629641 Romeo Langford romeo-langford 3:25 0.000 1.000 0.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000 1.000 0.000
12 1629682 Tremont Waters tremont-waters 3:25 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
13 1629035 Carsen Edwards carsen-edwards 3:25 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
14 1628400 Semi Ojeleye semi-ojeleye DNP - Coach's Decision 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
print(home_df.to_string())
personId firstName familyName playerSlug position comment statistics.minutes statistics.percentageFieldGoalsAttempted2pt statistics.percentageFieldGoalsAttempted3pt statistics.percentagePoints2pt statistics.percentagePointsMidrange2pt statistics.percentagePoints3pt statistics.percentagePointsFastBreak statistics.percentagePointsFreeThrow statistics.percentagePointsOffTurnovers statistics.percentagePointsPaint statistics.percentageAssisted2pt statistics.percentageUnassisted2pt statistics.percentageAssisted3pt statistics.percentageUnassisted3pt statistics.percentageAssistedFGM statistics.percentageUnassistedFGM
0 1628998 Cody Martin cody-martin F 31:02 0.778 0.222 0.615 0.000 0.231 0.154 0.154 0.308 0.615 1.000 0.000 1.000 0.000 1.000 0.000
1 1628970 Miles Bridges miles-bridges F 33:53 0.429 0.571 0.300 0.000 0.600 0.150 0.100 0.100 0.300 0.667 0.333 0.750 0.250 0.714 0.286
2 1629023 P.J. Washington pj-washington C 38:36 0.500 0.500 0.364 0.000 0.545 0.000 0.091 0.000 0.364 1.000 0.000 1.000 0.000 1.000 0.000
3 1626179 Terry Rozier terry-rozier G 32:39 0.500 0.500 0.286 0.000 0.714 0.238 0.000 0.238 0.286 0.667 0.333 1.000 0.000 0.875 0.125
4 1628984 Devonte' Graham devonte-graham G 31:40 0.214 0.786 0.083 0.083 0.750 0.125 0.167 0.000 0.000 1.000 0.000 0.833 0.167 0.857 0.143
5 202954 Brad Wanamaker brad-wanamaker 24:17 0.833 0.167 1.000 0.000 0.000 0.167 0.000 0.000 1.000 0.667 0.333 0.000 0.000 0.667 0.333
6 1629667 Jalen McDaniels jalen-mcdaniels 19:05 0.625 0.375 1.000 0.500 0.000 0.500 0.000 0.500 0.500 1.000 0.000 0.000 0.000 1.000 0.000
7 202687 Bismack Biyombo bismack-biyombo 21:45 1.000 0.000 1.000 0.000 0.000 0.000 0.000 0.000 1.000 0.500 0.500 0.000 0.000 0.500 0.500
8 1630176 Vernon Carey Jr. vernon-carey-jr 1:46 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
9 1630208 Nick Richards nick-richards 1:46 0.000 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
10 1630203 Grant Riller grant-riller 1:46 0.500 0.500 0.400 0.400 0.600 0.000 0.000 0.600 0.000 0.000 1.000 1.000 0.000 0.500 0.500
11 1628997 Caleb Martin caleb-martin 1:46 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
12 203469 Cody Zeller cody-zeller DNP - Coach's Decision 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
如果它在您的计算机上至少运行过一次,它将在其他人的计算机上运行。由于请求太多,您被网站阻止。您说过“将以yyyy-mm-dd格式向用户询问日期”-哪里?它不在你的代码中。调用函数时,
list\u link
的值是多少?不要增加表行的计数器tr
,只需搜索所有的tr
,然后循环这些结果。谢谢你的回复,我没有把整个代码放在这里,因为那些函数不是问题,当当有什么方法可以解除阻塞吗?我睡了5秒钟,因为我认为这足够缓冲区不被阻塞(但是,在我把它放在那里之前,我又一次被阻止了。我不想检查所有的tr,因为其中一些没有价值,但也许你的方法会更有效。你正在检查所有的tr
。只需增加行号,直到你得到一个异常,而不是仅仅循环它们-这不会需要进行异常检查。对于“无价值”的任何条件都适用于“无限直到异常”方法,就像它适用于“迭代表行”一样.啊,我明白你的意思了,那么我该如何实现呢?如果我被阻止了,我将无法进入,除非我从另一台电脑上尝试。如果是这样的话,我手动访问网站不会有问题吗?如果这对你有帮助的话,我可以在这里添加我的完整代码。太棒了,我认为这将与游戏Id一起工作,我将进入我的解析函数,我将把它传递给api,但这些是一些奇怪的统计数据,哈哈,有像pts、篮板、助攻等吗?雅雅。只需要更改其他统计数据的api url。我只是假设“得分”
都有,但显然没有。需要“传统”吗
stats。我把奥瑟林留在那里,这样你就可以看到发生了什么变化