Удалить пустую строку BeautifulSoup - PullRequest
2 голосов
/ 14 января 2020

Не могу понять, как удалить пустые строки? .strip (). replace ("\ n", "") не работает

Код:

from bs4 import BeautifulSoup as bs
import requests
from urllib.request import urlopen   
headers = {'accept': '*/*', 
           'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
base_url = 'https://book24.kz/product/kapitanskaya-dochka_14//'  
def BB_parse(base_url, headers):
    session = requests.Session()
    request = session.get(base_url, headers = headers)
    if request.status_code == 200:
        soup = bs(request.content, 'lxml')
        for count, tag in enumerate(soup.find_all(class_='name')):
            ISBN1 = soup.find_all(class_='val')[count].text if tag.text == 'ISBN' else ''
            ISBN = ISBN1
            print(ISBN)

Печать:

'empty line'
    978-5-17-115171-3
'empty line'
'empty line'
'empty line'
'empty line'

на случай необходимости для отображения всех характеристик отдельно

'ISBN' 'Возрастное ограничение' 'Издательство' 'Авторы' 'Серия' 'Переплет' 'Вес' 'Количество страниц' 'Ширина' 'Высота' 'Дата последнего тиража'

Страница:

<div class="catalog-detail-properties">
                <div class="h4">Характеристики</div>


                                                        <div class="catalog-detail-property">
                        <span class="name">Возрастное ограничение</span>
                        <span class="val">12+</span>
                    </div>
                                                        <div class="catalog-detail-property">
                        <span class="name">ISBN</span>
                        <span class="val" itemprop="isbn">978-5-17-115171-3</span>
                    </div>
                                                        <div class="catalog-detail-property">
                        <span class="name">Издательство</span>
                        <span class="val" itemprop="publisher"><a href="/publishers/izdatelstvo-ast/">АСТ</a></span>
                    </div>
                                                        <div class="catalog-detail-property">
                        <span class="name">Авторы</span>
                        <span class="val" itemprop="author"><a href="/authors/pushkin-aleksandr-sergeevich/">Пушкин Александр Сергеевич</a></span>
                    </div>
                                                        <div class="catalog-detail-property">
                        <span class="name">Серия</span>
                        <span class="val"><a href="/series/luchshaya-mirovaya-klassika/">Лучшая мировая классика</a></span>
                    </div>
                                                        <div class="catalog-detail-property">
                        <span class="name">Переплет</span>
                        <span class="val" itemprop="bookFormat">Твердый</span>
                    </div>
                                                        <div class="catalog-detail-property">
                        <span class="name">Вес</span>
                        <span class="val">0.299</span>
                    </div>
                                                        <div class="catalog-detail-property">
                        <span class="name">Количество страниц</span>
                        <span class="val" itemprop="numberOfPages">384</span>
                    </div>
                                                        <div class="catalog-detail-property">
                        <span class="name">Ширина</span>
                        <span class="val">125</span>
                    </div>
                                                        <div class="catalog-detail-property">
                        <span class="name">Высота</span>
                        <span class="val">200</span>
                    </div>
                                                        <div class="catalog-detail-property">
                        <span class="name">Дата последнего тиража</span>
                        <span class="val" itemprop="datePublished">05.04.2019</span>
                    </div>
                            </div>

Ответы [ 2 ]

2 голосов
/ 14 января 2020

Пустые строки оцениваются как False в логическом контексте

>>> bool('')
False

Так что вы можете проверить это раньше, вот так:

if ISBN.strip(): # strip incase of something like '   '
    print(ISBN)
1 голос
/ 14 января 2020

Попробуйте следующий код с селектором css.

from bs4 import BeautifulSoup as bs
import requests
from urllib.request import urlopen
headers = {'accept': '*/*',
           'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
base_url = 'https://book24.kz/product/kapitanskaya-dochka_14/'
def BB_parse(base_url, headers):
    session = requests.Session()
    request = session.get(base_url, headers = headers)
    if request.status_code == 200:
        soup = bs(request.content, 'lxml')
        print([item.text for item in soup.select('.name')])
        print([item.find_next('span').text for item in soup.select('.name')])


BB_parse(base_url, headers)

Выход :

['Возрастное ограничение', 'ISBN', 'Издательство', 'Авторы', 'Серия', 'Переплет', 'Вес', 'Количество страниц', 'Ширина', 'Высота', 'Дата последнего тиража']
['12+', '978-5-17-115171-3', 'АСТ', 'Пушкин Александр Сергеевич', 'Лучшая мировая классика', 'Твердый', '0.299', '384', '125', '200', '05.04.2019']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...