Соскребая текст с неупорядоченных списков, используя красивый суп и питона - PullRequest
0 голосов
/ 25 декабря 2018

Я использую питон и красивый суп, чтобы соскрести информацию с веб-страницы.Я заинтересован в следующем разделе исходного кода:

<ul class="breadcrumb">
<li><a href="/" title="Return to the home page">Home</a><span 
class="sprite icon-delimiter"></span></li>
<li><a href="/VehicleSearch/Search/Mini" title="View our range of Mini 
vehicles">Mini</a><span class="sprite icon-delimiter"></span></li>
<li class="active"><a href="/VehicleSearch/Search/Mini/Countryman" 
title="View our range of Mini Countryman">Countryman</a></li>
</ul>

Я хочу извлечь текст из неупорядоченного списка маркеров, то есть «Home», «Mini» и «Countryman» (которые также являются всеми ссылками).

Моя самая близкая попытка до сих пор была сделана:

for ul in soup.findAll('ul', class_='breadcrumb'):
    print(ul.find('a').contents[0])

Но это нашло только ссылку «Домой», а не две другие.Как мне найти все три текстовых ссылки, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Почему бы не использовать селекторный комбинатор css для получения тегов li внутри класса?

from bs4 import BeautifulSoup as bs

html ='''
<ul class="breadcrumb">
<li><a href="/" title="Return to the home page">Home</a><span 
class="sprite icon-delimiter"></span></li>
<li><a href="/VehicleSearch/Search/Mini" title="View our range of Mini 
vehicles">Mini</a><span class="sprite icon-delimiter"></span></li>
<li class="active"><a href="/VehicleSearch/Search/Mini/Countryman" 
title="View our range of Mini Countryman">Countryman</a></li>
</ul>
'''
soup = bs(html, 'lxml')
items = [item.text for item in soup.select('.breadcrumb li')]
print(items)
0 голосов
/ 25 декабря 2018

Попробуйте добавить внутренний цикл для текста ссылки:

for ul in soup.findAll('ul', class_='breadcrumb'):
    for link in ul.findAll('a'):
        print(link.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...