В Selenium посмотрите, содержит ли тег привязки » a » нужный мне текст, а затем извлеките несколько td текста в одной строке

#python #selenium-chromedriver

Вопрос:

Для моего кода на python я пытался извлечь данные из статистики NCAAF. У меня возникли проблемы с извлечением текста td после того, как я оценил, содержит ли тег привязки » a » нужный мне текст. Я хочу, чтобы у команд была возможность найти количество tds, очков и ppg. Мне удалось успешно найти школу по тексту в selenium, но после этого я не могу извлечь нужную информацию. Вот что я закодировал до сих пор.

 from selenium import webdriver
driver = webdriver.Chrome('C:\Users\Carl\Downloads\chromedriver.exe')
driver.get('https://www.ncaa.com/stats/football/fbs/current/team/27')

# I plan to make a while or for loop later, that is why I used f strings
team = "Coastal Carolina"
first = driver.find_element_by_xpath(f'//a[text()="{team}"]')

# This was the way another similiarly asked question was answered but did not work
#tds = driver.find_element_by_xpath(f'//td//a[text()="{apples}"]/../td[4]').text

# This grabs data from the very first row of data... not the one I want
tds = first.find_element_by_xpath('//following-sibling::td[4]').text
total_points = first.find_element_by_xpath('//following-sibling::td[10]').text
ppg = first.find_element_by_xpath('//following-sibling::td[11]').text
print(tds, total_points, ppg)

driver.quit()
 

Я попытался поискать похожий вопрос и смог найти этот фрагмент

 tds = driver.find_element_by_xpath(f'//td//a[text()="{apples}"]/../td[4]').text
 

к сожалению, это мне не очень помогло. Структура html выглядит следующим образом. Я ценю любую помощь и благодарю вас!

Ответ №1:

Нет необходимости использовать Selenium, страница не динамична. Просто используйте панд для анализа таблицы для вас:

 import pandas as pd

url = 'https://www.ncaa.com/stats/football/fbs/current/team/27'
dfs = pd.read_html(url)[0]
 

Выход:

 print(df)
   Rank                 Team  G  TDs  PAT  2PT  Def Pts  FG  Saf    Pts   PPG
0     1             Ohio St.  6   39   39    0        0   6    0  291.0  48.5
1     2           Pittsburgh  6   40   36    0        0   4    1  290.0  48.3
2     3     Coastal Carolina  7   43   42    0        0   6    1  320.0  45.7
3     4              Alabama  7   41   40    1        0   9    0  315.0  45.0
4     5             Ole Miss  6   35   30    1        0   6    1  262.0  43.7
5     6           Cincinnati  6   36   34    1        0   3    0  261.0  43.5
6     7             Oklahoma  7   35   34    1        1  17    0  299.0  42.7
7     -                  SMU  7   40   36    1        0   7    0  299.0  42.7
8     9                Texas  7   38   37    0        0   8    1  291.0  41.6
9    10          Western Ky.  6   31   27    1        0  10    0  245.0  40.8
10   11            Tennessee  7   36   36    0        0   7    1  275.0  39.3
11   12          Wake Forest  6   28   24    2        0  12    0  232.0  38.7
12   13                 UTSA  7   33   33    0        0  13    0  270.0  38.6
13   14             Michigan  6   28   25    1        0  12    0  231.0  38.5
14   15              Georgia  7   34   33    0        0  10    1  269.0  38.4
15   16               Baylor  7   35   35    0        0   7    1  268.0  38.3
16   17              Houston  6   30   28    0        0   5    0  223.0  37.2
17    -                  TCU  6   29   28    0        0   7    0  223.0  37.2
18   19             Marshall  7   34   33    0        0   7    0  258.0  36.9
19    -       North Carolina  7   34   32    2        0   6    0  258.0  36.9
20   21               Nevada  6   26   24    1        0  12    0  218.0  36.3
21   22             Virginia  7   31   29    2        0  10    2  253.0  36.1
22   23           Fresno St.  7   32   27    1        0  10    0  251.0  35.9
23    -              Memphis  7   33   26    3        0   7    0  251.0  35.9
24   25           Texas Tech  7   32   31    0        0   9    0  250.0  35.7
25   26               Auburn  7   29   28    1        0  12    1  242.0  34.6
26   27              Florida  7   33   29    1        0   4    0  241.0  34.4
27    -             Missouri  7   31   31    0        0   8    0  241.0  34.4
28   29              Liberty  7   33   29    1        0   3    1  240.0  34.3
29    -         Michigan St.  7   30   30    0        0  10    0  240.0  34.3
30   31                  UCF  6   28   26    0        0   3    1  205.0  34.2
31   32           Oregon St.  6   27   27    0        0   5    0  204.0  34.0
32   33               Oregon  6   26   26    0        0   7    0  203.0  33.8
33   34             Iowa St.  6   23   22    0        0  14    0  202.0  33.7
34   35                 UCLA  7   30   28    0        0   9    0  235.0  33.6
35   36        San Diego St.  6   25   24    1        0   7    0  197.0  32.8
36   37                  LSU  7   29   29    0        0   8    0  227.0  32.4
37   38           Louisville  6   24   23    0        0   9    0  194.0  32.3
38    -           Miami (FL)  6   24   22    1        0   8    1  194.0  32.3
39    -             NC State  6   25   24    0        0   6    1  194.0  32.3
40   41  Southern California  6   22   19    3        0  12    0  193.0  32.2
41   42               Tulane  7   31   23    4        0   2    0  223.0  31.9
42   43          Arizona St.  7   30   25    2        0   4    0  221.0  31.6
43   44                 Utah  6   25   22    1        0   5    0  189.0  31.5
44   45            Air Force  7   29   27    1        0   5    1  220.0  31.4
45   46            App State  7   27   24    0        0  11    0  219.0  31.3
46   47             Arkansas  7   27   25    0        0  10    0  217.0  31.0
47    -      Army West Point  6   25   22    0        0   4    1  186.0  31.0
48    -           Notre Dame  6   23   20    2        0   8    0  186.0  31.0
49    -        Western Mich.  7   28   25    0        0   8    0  217.0  31.0
 

Комментарии:

1. Вау, спасибо, я никогда не смотрел на это с такой точки зрения, я ценю вашу помощь. Просто сэкономил мне кучу времени!