BeautifulSoup возвращает весь HTML вместо того, что я выбрал - PullRequest
0 голосов
/ 06 февраля 2019

Действительно новичок в этом, так что это может быть не проблема, но я ничего не могу найти на нем.Мой код выводит весь html, а не то, что я настроил на возврат.

Я исправляю проблемы, с которыми столкнулся, но на этот раз я не могу ничего найти.

from bs4 import BeautifulSoup  
soup =
BeautifulSoup(open("Watch List.html", encoding='utf-8'), 'html.parser')

section = soup.find('div', attrs={'class':'content'})
results = section.find_all('div', attrs={'class':'item watching'})+section.find_all('div', attrs={'class':'item watched'})
results = soup.prettify().splitlines()
print(results)

1 Ответ

0 голосов
/ 06 февраля 2019

Вы делаете это совершенно неправильно !!!В 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...