Я соскабливаю с этой страницы: 'https://kenpom.com/index.php?y=2018'
У меня такой код:
import requests
from bs4 import BeautifulSoup
url ='https://kenpom.com/index.php?y=2018'
r = requests.get(url).text
soup = BeautifulSoup(r, 'lxml')
table = soup.find('table',{'id':'ratings-table'}).tbody
teams = table.findAll('tr')4
Переменная teams
содержит 367 элементов tr
. У большинства из них нет класса, но у некоторых есть класс thead1, а у некоторых - класс thead2. Как мне удалить все элементы tr
в teams
, у которых есть класс thead1 или thead2?
Этот лайнер должен работать:
newTeams = [x for x in teams if (type(x) != thead1) and (type(x) != thead2) ]
Попробуй это:
[x for x in teams if 'class' not in x.attrs or ('thead1' not in x.attrs['class'] and 'thead2' not in x.attrs['class'])]
Если вы выберете .извлекать(), это поможет вам избавиться от тех tr
, которые вы не хотите оставлять. Обратите внимание на следующую реализацию.
import requests
from bs4 import BeautifulSoup
url ='https://kenpom.com/index.php?y=2018'
r = requests.get(url).text
soup = BeautifulSoup(r, 'lxml')
table = soup.find('table',{'id':'ratings-table'}).tbody
[tr.extract() for tr in table.find_all('tr',class_=["thead1","thead2"])]
teams = table.find_all('tr')
print(len(teams))
Результат:
351
Я проверю это, когда вернусь домой. Но разве thead1 и thead2 не нужно заключать в кавычки?