Я практиковал webscraping с плейлистом nba.com, но столкнулся с проблемой, когда ссылка, которую я добавил в один цикл for, не появляется, когда я вызываю его в другом цикле for.
Я уже пытался сделать больше переменных как в исходном цикле for, так и в цикле for. Я хочу, чтобы переменная отображалась в нем, но он не отображается. Я пытаюсь использовать ссылку, которую я удалил (это не полная ссылка, а конечная часть ссылки, которую я пытаюсь объединить с основанием ссылки).
from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.chrome.options import Options
class Player():
"""docstring for ClassName"""
def __init__(self):
self.name = ""
self.link = ""
self.PPG = ""
self.RPG = ""
def get_player_list():
opt = webdriver.ChromeOptions()
opt.add_argument('headless')
browser = webdriver.Chrome(options=opt)
browser.get('https://stats.nba.com/players/list/')
soup = BeautifulSoup(browser.page_source, 'lxml')
browser.quit()
names = soup.find('div',class_='stats-player-list players-list')
player_list = []
for name in names.find_all('a'):
new_play = Player()
new_play.name = name.text
new_play.link = name["href"]
player_list.append(new_play)
for one_player in player_list:
print (one_player.name)
print (one_player.link)
return player_list
def get_player_stats(player_list):
opt = webdriver.ChromeOptions()
opt.add_argument('headless')
browser = webdriver.Chrome(options=opt)
for p in player_list[0:2]:
browser.get('https://stats.nba.com'+p.link)
soup = BeautifulSoup(browser.page_source, 'lxml')
browser.quit()
PPG = ""
points1 = soup.find('a',href = '/players/traditional/?sort=PTS&dir=-1')
points = points1.div
for point in points.findNextSiblings():
PPG = "PPG" + point.text
RPG = ""
rebounds1 = soup.find('a',href = '/players/traditional/?sort=REB&dir=-1')
rebounds = rebounds1.div
for rebound in rebounds.findNextSiblings():
RPG = "RPG" + rebound.text
p.PPG = PPG
p.RPG = RPG
browser.quit()
return player_list
player_list = get_player_stats(get_player_list())
Как показано в коде смещения, начинающемся с names.find_all('a'):
, все работает правильно, и ссылка передается и распечатывается по шаблону (например, Abrines, Alex / player / 203518 /), но при достижении for p in player_list[0:2]:
Когда я вставляю p.link, он не переносится, и когда я пытался заставить его печатать p.link, ничего не печаталось. Буду признателен за любую помощь, так как я уже давно тестирую очень много вещей!