Мне интересно собирать бюджеты на производство, национальные брутто, глобальные брутто и названия.
Используя следующий код, у меня есть весь HTML, а мне нужен текст:
import re
import requests
from bs4 import BeautifulSoup
URL = 'https://www.the-numbers.com/movie/budgets/all'def scarica_pagina(link):
page = requests.get(link)
soup = BeautifulSoup(page.text, 'lxml')
cnt=0
for film in soup.find("table").find_all("tr"):
cnt=cnt+1
title = film.find_all('b')
budget = film.find_all('td')
print(cnt, title, budget)if __name__ == '__main__':
scarica_pagina(URL)
Я попытался выполнить код:
title = film.find_all('b').text
budget = film.find_all('td').text
Однако возникает следующая ошибка:
"Объект ResultSet не имеет атрибута"% s ". Вероятно, вы обрабатываете список предметов, как один элемент. Вы вызывали find_all (), когда вы хотели вызвать find ()?" % keyAttributeError: объект ResultSet не имеет атрибута 'text'. Вероятно, вы обрабатываете список предметов, как один элемент. Вы вызывали find_all (), когда вы хотели вызвать find ()? "
Действительно, я удалил .text
, получив весь HTML.
Пожалуйста, помогите мне.
Попробуйте приведенный ниже подход, чтобы получить ожидаемые результаты:
Выход:
Посмотрите также:
find_all()
возвращает список. Чтобы получить текст, вам нужно ссылаться на один элемент в этом списке:Вам нужно указать позицию текста, который вы хотите извлечь, findAll migth возвращает более одного элемента, чтобы вы могли их получить:
Вы можете изменить "0", если вам нужен другой элемент внутри списка.
Вы можете очистить таблицу, используя
BeautifulSoup.find_all
:Выход:
print(rows)