Соскоб неправильный стол - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь получить расширенную статистику игроков на листе Excel, но таблица, на которой она находится, является первой, а не таблицей расширенной статистики.

ValueError: Length of passed values is 23, index implies 21

Если я пытаюсь использовать идентификатор вместо этого я получаю еще одну ошибку о теле.

Кроме того, я получаю сообщение об ошибке

lname=name.split(" ")[1]
IndexError: list index out of range. 

Я думаю, что это связано с 'Nene' в списке. Есть ли способ это исправить?

import requests
from bs4 import BeautifulSoup
playernames=['Carlos Delfino',
'Yao Ming',
'Andris Biedrins',
'Nene']

for name in playernames:
  fname=name.split(" ")[0]
  lname=name.split(" ")[1]
  url="https://basketball.realgm.com/search?q={}+{}".format(fname,lname)
  response = requests.get(url)

  soup = BeautifulSoup(response.content, 'html.parser')
  table = soup.find('table', attrs={'class': 'tablesaw', 'data-tablesaw-mode-exclude': 'columntoggle'}).find_next('tbody')
  print(table)  

  columns = ['Season', 'Team', 'League', 'GP', 'GS', 'TS%', 'eFG%', 'ORB%', 'DRB%', 'TRB%', 'AST%', 'TOV%', 'STL%', 'BLK%', 'USG%', 'Total S%', 'PPR', 'PPS', 'ORtg', 'DRtg', 'PER']
  df = pd.DataFrame(columns=columns)

  trs = table.find_all('tr')
  for tr in trs:
    tds = tr.find_all('td')
    row = [td.text.replace('\n', '') for td in tds]
    df = df.append(pd.Series(row, index=columns), ignore_index=True)

df.to_csv('international players.csv', index=False) 

1 Ответ

1 голос
/ 22 января 2020

Бразильцы используют только одно имя для футбола Фред. Если вы хотите использовать их прозвище (Nene / Fred), вам нужно реализовать для этого обработку исключений, что-то вроде

try:
    lname=name.split(" ")[1]
except IndexError:
    lname=name

. Для решения проблемы очистки попробуйте использовать find_all вместо find, это даст вам каждую таблицу данных на данной странице, а затем вы сможете извлечь нужную таблицу из списка

Изменить table = soup.find('table', attrs={'class': 'tablesaw', 'data-tablesaw-mode-exclude': 'columntoggle'}, {'id':'table-3554'}) на find_all

К вашему сведению, изменение идентификатора таблицы каждый раз, когда вы обновляете sh страницу, чтобы вы не могли использовать ID в качестве механизма поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...