Красивый суп - Как получить <li>предметов из класса div и <ul>без имени класса для ul и без ID - PullRequest
0 голосов
/ 01 апреля 2019

Входные данные, как показано ниже, содержат несколько тегов ul, таких же, что и для очистки в прекрасном супе python.

<div class="column one-second"><p></p> <ul> <li>Commercial automobile</li> <li>Excess liability</li> <li>General liability</li> <li>Inland marine (cargo)</li> </ul> <p></p></div> <div class="column one-second"><p></p> <ul> <li>Professional Liability</li> <li>Property</li> <li>Workers’ compensation</li> </ul> <p></p></div>

To get the listed items from `ul` tag using beautiful soup library, I tried this but did not work:

    amusements_soup.find_all('li', attrs={'id': 'menu-item-16'})


    amusements_soup.find_all('div',{'class':'column one-second'})


    ul = amusements_soup.find("h2", text="Services & Solutions").find_next_sibling("ul")

expected output :

> Commercial automobile
> 
> Excess liability
> 
> General liability
>
> Inland marine 
>
> Professional Liability
> 
> Workers’ compensation

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

То же самое с селектором классов и типов с комбинатором-потомком, использующим понимание списка

results = [item.text for item in amusements_soup.select('.one-second li')]
0 голосов
/ 01 апреля 2019

Предполагая, что amusements_soup содержит упомянутый вами HTML, это должно работать:

from bs4 import BeautifulSoup

page = '<div class="column one-second"><p></p> <ul> <li>Commercial automobile</li> <li>Excess liability</li> <li>General liability</li> <li>Inland marine (cargo)</li> </ul> <p></p></div> <div class="column one-second"><p></p> <ul> <li>Professional Liability</li> <li>Property</li> <li>Workers’ compensation</li> </ul> <p></p></div>'
amusements_soup = BeautifulSoup(page,"html.parser")
for item in amusements_soup.findAll('div',{'class':'column one-second'}):
    sub_items = item.findAll('li')
    for sub_item in sub_items:
        print(sub_item.text)

Выход:

Commercial automobile
Excess liability
General liability
Inland marine (cargo)
Professional Liability
Property
Workers’ compensation

Если это не работает для вас, вам нужно проверить, что amusements_soup на самом деле то, что вы думаете

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