@iamjusttoask

Почему при парсинге сайта тег thead в table находится, а tbody нет?

""" Привет, код выдает ошибку trs = soup.find('table').find('tbody').find_all('tr')
AttributeError: 'NoneType' object has no attribute 'find'

то есть почему-то в теле тега table не находится тег tbody, а если писать thead, то его находит, с чем это связано и как получить доступ к tbody ????
Парсинг на примере сайта - https://coinmarketcap.com/ , попытка получить данные по каждой крипотвалюте из таблицы"""

import requests
from bs4 import BeautifulSoup
import csv

def get_html(url):
r = requests.get(url)
return r.text

def write_csv(data):
with open('cmc.csv', 'a') as f:
writer = csv.writer(f)
pass

def get_page_data(html):
soup = BeautifulSoup(html, 'lxml')

trs = soup.find('table').find('tbody').find_all('tr')
# trs = soup.find('table', id='currencies').find('tbody').find_all('tr')
# в оригинале кода было, как в комменте и пример был разобран на основе https://coinmarketcap.com/
# на момент записи урока в html коде страницы у тега table был id, сейчас его нет
# в таблицу все равно заходит, но почему-то в ней виден лишь тег thead и его содержимое, тег tbody - не найден,
print(len(trs))
print(trs)

def main():
url = 'https://coinmarketcap.com/'
get_page_data(get_html(url))

if __name__ == '__main__':
main()
  • Вопрос задан
  • 302 просмотра
Пригласить эксперта
Ответы на вопрос 1
@galaxy
Потому что find('table') найдет первую в коде таблицу, а у нее нет tbody.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы