Как я могу вычеркнуть составы из баскетбольной ссылки? - PullRequest
0 голосов
/ 18 марта 2020

У меня есть этот URL: https://www.basketball-reference.com/teams/TOR/2020/lineups, и я хочу отказаться от очереди из 5 человек. Я пробовал это:

url = requests.get("https://www.basketball-reference.com/teams/TOR/2020/lineups")
soup=BeautifulSoup(url.content,'html.parser')
lineup=soup.find_all('div',{'class':'table_outer_container.mobile_table'})
print(lineup)
[]

html код для URL

Ответы [ 3 ]

1 голос
/ 18 марта 2020

Это комментарий - посмотрите, если вы это сделаете:

import requests from bs4 import BeautifulSoup, Comment url = requests.get("https://www.basketball-reference.com/teams/TOR/2020/lineups") soup = BeautifulSoup(url.content, 'html.parser') print(soup.find_all('div', {'class': ''}))

вы получите строку, начинающуюся с <!-- <div class="table_outer_container"> <div class="overthrow table_container" id="div_lineups_5-man_"> и так далее. Поскольку он начинается с <!--, это комментарий.

Извлечение комментариев может происходить так: import requests from bs4 import BeautifulSoup, Comment url = requests.get("https://www.basketball-reference.com/teams/TOR/2020/lineups") soup = BeautifulSoup(url.content, 'html.parser') comments = soup.find_all(string=lambda text: isinstance(text, Comment)) for c in comments: print(c.extract())

0 голосов
/ 18 марта 2020

Решение bailin010 является правильным (поэтому примите его решение), но просто сделайте шаг вперед, чтобы попасть в таблицу:

import pandas as pd
import requests
from bs4 import BeautifulSoup, Comment

url = requests.get("https://www.basketball-reference.com/teams/TOR/2020/lineups")
soup = BeautifulSoup(url.content, 'html.parser')
comments = soup.find_all(string=lambda text: isinstance(text, Comment))

tables = []
for each in comments:
    if 'table' in each:
        try:
            tables.append(pd.read_html(each)[0])
        except:
            continue

print (tables[0].head(10).to_string())

Вывод:

print (tables[0].head(10).to_string())
  Unnamed: 0_level_0                                 Unnamed: 1_level_0 Unnamed: 2_level_0 Net (Per 100 Poss)                                                                                                                               
                  Rk                                             Lineup                 MP                PTS    FG   FGA    FG%   3P   3PA    3P%   eFG%    FT   FTA    FT%   ORB  ORB%   DRB  DRB%   TRB  TRB%   AST   STL  BLK   TOV   PF
0                1.0  O. Anunoby | M. Gasol | K. Lowry | P. Siakam |...             278:58               11.7   2.6  -0.6  0.034  1.5   0.7  0.030  0.043   5.1   4.9  0.063  -2.4  -4.2   0.8  -4.2  -0.9  -1.9  -0.4   1.6 -1.0  -3.6 -1.4
1                2.0  O. Anunoby | S. Ibaka | K. Lowry | P. Siakam |...             197:30               -4.1  -1.7  -2.1 -0.009 -2.6  -4.1 -0.030 -0.022   1.8   1.1  0.049   0.1  -2.1  -4.9  -2.1  -2.3  -5.4  -5.7   0.7 -1.5  -1.6  0.1
2                3.0  O. Anunoby | M. Gasol | N. Powell | P. Siakam ...             191:44               14.8   5.4  -3.6  0.078  4.6   0.5  0.114  0.106  -0.6  -1.2  0.017  -7.6 -12.8   0.8 -12.8  -3.5  -7.6   2.9   3.7 -2.8  -4.8  0.5
3                4.0  O. Anunoby | S. Ibaka | K. Lowry | P. McCaw | ...             134:38              -10.0  -2.5  -3.8 -0.010 -2.6  -5.3 -0.019 -0.022  -2.3  -5.2  0.080  -4.0  -8.1  -1.4  -8.1  -2.8  -6.4  -2.0  -1.3  0.4   2.0  2.1
4                5.0  O. Anunoby | S. Ibaka | K. Lowry | N. Powell |...             117:16                3.1  -2.8  -6.7  0.006  2.4   0.0  0.061  0.025   6.3   5.5  0.075  -6.3 -13.9  -4.7 -13.9  -5.5 -12.8  -1.2   4.7 -2.0  -3.1  0.0
5                6.0  O. Anunoby | M. Gasol | K. Lowry | N. Powell |...             110:38               13.2   4.3  -0.6  0.053  3.6  -3.5  0.131  0.073   1.0   2.2 -0.044  -3.1  -5.9  -0.2  -5.9  -1.9  -4.3  -4.7   5.1  4.3  -6.9  1.0
6                7.0  O. Anunoby | T. Davis | S. Ibaka | P. Siakam |...              39:11               21.0   7.9  -5.0  0.105  6.3   4.2  0.109  0.142  -1.1   0.2 -0.067  -3.5  -0.2   9.4  -0.2   3.1   6.3   4.0  -0.1  3.6   5.0 -0.6
7                8.0  O. Anunoby | R. Hollis-Jefferson | K. Lowry | ...              39:05                3.7   2.1   8.0 -0.020 -9.3   0.8 -0.242 -0.080   8.9  10.2  0.032  -1.5 -10.0 -12.6 -10.0  -7.2 -16.4 -12.1  13.2  1.3 -14.6  0.7
8                9.0  O. Anunoby | T. Davis | S. Ibaka | K. Lowry | ...              37:17               36.1  22.2   5.6  0.221  2.8  -9.7  0.179  0.232 -11.1 -12.5 -0.095  -4.2  -3.7   5.6  -3.7   0.7   1.5  19.4   1.4  4.2  -6.9 -2.1
9               10.0  M. Gasol | R. Hollis-Jefferson | N. Powell | P...              36:06               -4.1  -1.8 -21.6  0.071 -8.3 -21.0 -0.038  0.043   7.9   9.2  0.039 -16.6 -23.6  -3.6 -23.6 -10.2 -19.5  -4.4   0.1  4.2  -5.7 -6.8
0 голосов
/ 18 марта 2020

вы можете получить таблицу, используя метод pandas read_ html (): вы можете попробовать приведенный ниже код для требуемой таблицы, в которой хранится df в переменной "data": -

from selenium import webdriver
import pandas as pd

driver = driver = webdriver.Chrome(executable_path='Your/path/to/chromedriver.exe') 
driver.get("https://www.basketball-reference.com/teams/TOR/2020/lineups")

html = driver.page_source

tables = pd.read_html(html)
data = tables[-7]

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