как получить tbody из таблицы из красивого супа python?

Я пытаюсь отменить Year & Winners (первый и второй столбцы) из таблицы «Список финальных матчей» (вторая таблица) из http://en.wikipedia.org/wiki/List_of_FIFA_World_Cup_finals : Я использую следующий код:

import urllib2 from BeautifulSoup import BeautifulSoup url = "http://www.samhsa.gov/data/NSDUH/2k10State/NSDUHsae2010/NSDUHsaeAppC2010.htm" soup = BeautifulSoup(urllib2.urlopen(url).read()) soup.findAll('table')[0].tbody.findAll('tr') for row in soup.findAll('table')[0].tbody.findAll('tr'): first_column = row.findAll('th')[0].contents third_column = row.findAll('td')[2].contents print first_column, third_column 

С приведенным выше кодом я смог получить первую и четкую колонку просто отлично. Но когда я использую тот же код с http://en.wikipedia.org/wiki/List_of_FIFA_World_Cup_finals , он не может найти tbody в качестве своего элемента, но я могу видеть труп, когда я проверяю элемент.

 url = "http://en.wikipedia.org/wiki/List_of_FIFA_World_Cup_finals" soup = BeautifulSoup(urllib2.urlopen(url).read()) print soup.findAll('table')[2] soup.findAll('table')[2].tbody.findAll('tr') for row in soup.findAll('table')[0].tbody.findAll('tr'): first_column = row.findAll('th')[0].contents third_column = row.findAll('td')[2].contents print first_column, third_column 

Вот что я получил от ошибки комментария:

 ' --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-150-fedd08c6da16> in <module>() 7 # print soup.findAll('table')[2] 8 ----> 9 soup.findAll('table')[2].tbody.findAll('tr') 10 for row in soup.findAll('table')[0].tbody.findAll('tr'): 11 first_column = row.findAll('th')[0].contents AttributeError: 'NoneType' object has no attribute 'findAll' ' 

2 Solutions collect form web for “как получить tbody из таблицы из красивого супа python?”

Если вы просматриваете инструмент проверки в браузере, он вставляет теги tbody .

Исходный код может содержать или не содержать их. Я предлагаю посмотреть исходное представление, если вы действительно хотите это знать.

В любом случае, вам не нужно проходить к телу, просто:

soup.findAll('table')[0].findAll('tr') должен работать.

 url = "http://en.wikipedia.org/wiki/List_of_FIFA_World_Cup_finals" soup = BeautifulSoup(urllib2.urlopen(url).read()) for tr in soup.findAll('table')[2].findAll('tr'): #get data 

И затем найдите то, что вам нужно в таблице 🙂

  • очистить данные с веб-сайта, которые перешли на следующую страницу при прокрутке вниз с помощью Python и BeautifulSoup
  • Python webscraping - NoneObeject Failure - сломанный HTML?
  • Ошибка HTTP 999: запрос отклонен
  • Python Красивый суп, как JSON декодировать `dict`?
  • Как я могу сделать веб-скребок пересекаю несколько страниц результатов поиска с помощью Beautiful Soup?
  • селен не выполняет итерацию по элементам
  • Как найти определенный атрибут данных из тега html в BeautifulSoup4?
  • Отсутствуют значения веб-страницы при очистке данных с помощью BeautifulSoup python 3.6
  • Python - лучший язык программирования в мире.