Выскабливание Specifi c дочерние элементы - PullRequest
1 голос
/ 06 апреля 2020

Я хочу удалить, чтобы мне понадобилось два списка

ListA = ["Driver Convenience","Exterior Features"]

ListB = ["2 key fob;Collision mitigation braking system;","Body coloured plastic front bumper;Boulder grey exterior door handle;Boulder grey exterior door mirrorn;"]

ListA будет содержать текст в тегах h4, а ListB будет содержать текст в тегах li до следующего h4 тег найден.

Вот пример HTML Код:

<ul class="c-list-table">   
    <h4 class="c-list-table__section-heading">Driver Convenience</h4>
<li class="c-list-table__item" rel="2-key-fob"><span class="c-list-table__title"> 2 key fob </span</li>
<li class="c-list-table__item" rel="collision-mitigation-braking-system">Collision mitigation braking system</li>
    <h4 class="c-list-table__section-heading">Exterior Features</h4>
<li class="c-list-table__item" rel="body-coloured-plastic-front-bumper">Body coloured plastic front bumper</li>
<li class="c-list-table__item" rel="boulder-grey-exterior-door-handle">Boulder grey exterior door handle</li>
<li class="c-list-table__item" rel="boulder-grey-exterior-door-mirror">Boulder grey exterior door mirrorn</li>
</ul>

HTML такой же, как этот :) Пробовал много вещей, но не мог с собой поделать

1 Ответ

1 голос
/ 06 апреля 2020

Используйте find_next_siblings('li'), чтобы найти теги li после h4 , а затем убедитесь, что текст previous_sibling('h4') не совпадает с текстом, затем добавьте в список.

from bs4 import BeautifulSoup
data='''     
<ul class="c-list-table">   
<h4 class="c-list-table__section-heading">Driver Convenience</h4>
<li class="c-list-table__item" rel="2-key-fob"><span class="c-list-table__title"> 2 key fob </span</li>
<li class="c-list-table__item" rel="collision-mitigation-braking-system">Collision mitigation braking system</li>
<h4 class="c-list-table__section-heading">Exterior Features</h4>
<li class="c-list-table__item" rel="body-coloured-plastic-front-bumper">Body coloured plastic front bumper</li>
<li class="c-list-table__item" rel="boulder-grey-exterior-door-handle">Boulder grey exterior door handle</li>
<li class="c-list-table__item" rel="boulder-grey-exterior-door-mirror">Boulder grey exterior door mirrorn</li>
</ul>'''

ListA =[]
ListB =[]
soup=BeautifulSoup(data,'lxml')
for item in soup.find_all('h4'):
    lifinal=""
    ListA.append(item.text)
    nextlis=item.find_next_siblings('li')
    for li in nextlis:
        if li.find_previous_sibling('h4').text in item.text:
            lifinal=lifinal+li.text.strip()+";"
    ListB.append(lifinal)

print(ListA)
print(ListB)

Выход :

['Driver Convenience', 'Exterior Features']
['2 key fob;Collision mitigation braking system;', 'Body coloured plastic front bumper;Boulder grey exterior door handle;Boulder grey exterior door mirrorn;']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...