Как мне получить второй класс table?

#python #beautifulsoup

#python #beautifulsoup

Вопрос:

Я пытаюсь найти таблицу на странице Википедии, используя BeautifulSoup. Я знаю, как получить первую таблицу, но как мне получить вторую таблицу (недавние изменения в списке компонентов S amp; P 500) с тем же классом wikitable sortable ?

мой код:

 import bs4 as bs
import requests

url='https://en.wikipedia.org/wiki/List_of_S&P_500_companies'
r=requests.get(url)
url=r.content
soup = bs.BeautifulSoup(url,'html.parser')

tab = soup.find("table",{"class":"wikitable sortable"})
  

https://en.wikipedia.org/wiki/List_of_S&P_500_companies

Ответ №1:

Вы можете использовать soup.find_all последнюю таблицу и получить к ней доступ. Поскольку существует только два table тега с wikitable sortable в качестве класса, последним элементом в результирующем списке будет таблица «Недавние изменения»:

 soup.find_all("table", {"class":"wikitable sortable"})[-1]
  

Ответ №2:

Вы могли бы использовать css-селектор n-го типа для указания второй соответствующей таблицы

 import bs4 as bs
import requests

url = 'https://en.wikipedia.org/wiki/List_of_S&P_500_companies'
r = requests.get(url)
url = r.content
soup = bs.BeautifulSoup(url,'lxml')

tab = soup.select_one("table.wikitable.sortable:nth-of-type(2)")
print(tab)