как исключить определенный класс из красивого супа (python) - PullRequest
0 голосов
/ 29 марта 2020

from bs4 import BeautifulSoup

import requests

source = requests.get('http://photographyblogger.net/26-beautiful-horse-pictures/').text
soup = BeautifulSoup(source, features="html.parser")


post = soup.find('article','full')
title = post.h2.text

for summery in post.find_all('p'):      
    rest = post.find("p", "wp-caption-text");
    rest.decompose()
    print(summery.text)

то, что я хотел достичь, это напечатать заголовок, напечатать содержимое, а затем напечатать подпись, но в настоящее время без использования остальных я получаю все содержимое и подпись вместе. введите описание изображения здесь как вы можете видеть, если я использую этот код, я получаю то, что я намереваюсь, но есть некоторая ошибка

1 Ответ

0 голосов
/ 29 марта 2020

Кажется, ваш l oop over post.find_all('p') перечисляет все 'p' элементы, в то время как внутри l oop вы звоните find() на весь элемент 'post', если элементов "p", "wp-caption-text" меньше затем 'summery', тогда ваши rest строки будут пустыми, что означает, что вызов .decompose() для пустой строки дает ошибку 'NoneType' object has no attribute 'decompose', в то время как вы все равно можете увидеть все ожидаемые строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...