как получить 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 

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

  • как извлечь текст в теге font с помощью beautifulsoup
  • Программно загружать текст, который не отображается в источнике страницы
  • BeautifulSoup: получить содержимое конкретной таблицы
  • Разбор JS с красивым супом
  • Нажмите кнопку на веб-сайте, затем очистите веб-страницу
  • Необходимо очистить информацию с веб-страницы с помощью кнопки «показать больше», каких-либо рекомендаций?
  • Скребок: добавьте данные, сохраненные как изображение в файл CSV в python 3.5
  • Использование запросов python с страницами javascript
  • Python BeautifulSoup findAll по атрибуту "class"
  • Как использовать python-запросы и крючки событий для записи веб-искателя с функцией обратного вызова?
  • Как очистить сайт, который требует входа с помощью python и beautifulsoup?
  • Python - лучший язык программирования в мире.