Извлечение текста без уникального класса в BeautifulSoup4 - PullRequest
0 голосов
/ 20 ноября 2018

Как извлечь текст «Джоанна Роулинг» между тегами, у которых нет (уникального) класса с использованием BeautifulSoup4?

        <li class="Feature-item">
            <span class="Feature-label"><span>Auteur</span></span>
            <span class="Feature-desc"><span >Joanne K. Rowling</span></span>
        </li>

        <li class="Feature-item">
            <span class="Feature-label"><span>Helden</span></span>
            <span class="Feature-desc"><span ><a href="url">Harry Potter</a></span></span>
        </li>

        <li class="Feature-item">
            <span class="Feature-label"><span>Uitgeverij</span></span>
            <span class="Feature-desc"><span ><a href="url">Bloomsbury Libri</a></span></span>
        </li>

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Также вы можете сохранить в словарь, используя split, потому что есть \n до и после текста.['\nAuteur\nJoanne K. Rowling\n', '\nHelden\nHarry Potter\n', '\nUitgeverij\nBloomsbury Libri\n']

from bs4 import BeautifulSoup

html = '''
        <li class="Feature-item">
            <span class="Feature-label"><span>Auteur</span></span>
            <span class="Feature-desc"><span >Joanne K. Rowling</span></span>
        </li>

        <li class="Feature-item">
            <span class="Feature-label"><span>Helden</span></span>
            <span class="Feature-desc"><span ><a href="url">Harry Potter</a></span></span>
        </li>

        <li class="Feature-item">
            <span class="Feature-label"><span>Uitgeverij</span></span>
            <span class="Feature-desc"><span ><a href="url">Bloomsbury Libri</a></span></span>
        </li>
'''

soup = BeautifulSoup(html, 'lxml')

li_list = soup.find_all('li', {'class':'Feature-item'})

data_dict = {li.span.text:li.text.split("\n")[2] for li in li_list} 

print(data_dict)
# {'Auteur': 'Joanne K. Rowling', 'Uitgeverij': 'Bloomsbury Libri', 'Helden': 'Harry Potter'}
0 голосов
/ 20 ноября 2018
from bs4 import BeautifulSoup as bs

html = '''<li class="Feature-item">
            <span class="Feature-label"><span>Auteur</span></span>
            <span class="Feature-desc"><span >Joanne K. Rowling</span></span>
        </li>

        <li class="Feature-item">
            <span class="Feature-label"><span>Helden</span></span>
            <span class="Feature-desc"><span ><a href="url">Harry Potter</a></span></span>
        </li>

        <li class="Feature-item">
            <span class="Feature-label"><span>Uitgeverij</span></span>
            <span class="Feature-desc"><span ><a href="url">Bloomsbury Libri</a></span></span>
        </li>'''

soup = bs(html, 'lxml')

names = soup.findAll('span', {'class':'Feature-desc'})

for name in names:
    name = name.find('span').get_text().strip()
    print(name)

#Output:
Joanne K. Rowling
Harry Potter
Bloomsbury Libri
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...