Вы делаете это совершенно неправильно !!!В BeautifulSoup find()
возвращает один элемент, а find_all()
возвращает список, даже если список содержит только один элемент.В вашем коде
section.find_all('div', attrs={'class':'item watching'})
должен возвращать список, который объединяется с вашим вторым find_all
, который равен
section.find_all('div', attrs={'class':'item watched'})
, который также должен выбрасывать список, но этоне будет, так как вы делаете это неправильно.Это должно быть soup.find_all()
вместо section.find_all()
, поскольку section
не является инициализированным объектом, в то время как soup
является.
И, наконец, soup.prettify()
вернет всю страницу, посколькуВы устанавливаете парсер там.
Ваш код должен выглядеть следующим образом:
from bs4 import BeautifulSoup
soup = BeautifulSoup(open("Watch List.html", encoding='utf-8'), 'html.parser')
# soup.find() returns a single element
section = soup.find('div', attrs={'class':'content'})
# this will print out the <div class="content" ...>
print(section)
# soup.find_all() returns a list
results = soup.find_all('div', attrs={'class':'item watching'})+soup.find_all('div', attrs={'class':'item watched'})
# the above line returns a list, so you'll have to iterate it over:
for result in results:
res = result.prettify()
# prints out prettified stuff one by one
print(res)
# print(res+"\n\n")