извлечение данных из следующего диапазона в том же теге h1 в BeautifulSoup - PullRequest
0 голосов
/ 06 марта 2019

Привет, я пытаюсь очистить подкатегорию

subcat = soup.find(class_='bread-block-wrap').find(class_='breadcrumb-keyword-bg').find(class_='breadcrumb-keyword list-responsive-container').find(class_='ui-breadcrumb').find('h1')

, и это вывод

<h1>
<a href="//www.aliexpress.com/category/509/cellphones-telecommunications.html" title="Cellphones &amp; Telecommunications"> Cellphones &amp; Telecommunications</a>
<span class="divider">&gt;</span> <span> Mobile Phones</span>
</h1>

, так что теперь есть 2 тега span span номер 1:

<span class="divider">&gt;</span>

и 2-й -

<span> Mobile Phones</span>

, и я хочу очистить этот текст в тэге 2-го диапазона, пожалуйста, кто-нибудь может помочь

Ответы [ 3 ]

1 голос
/ 06 марта 2019

Вы можете использовать css nth-of-type селектор

h1 span:nth-of-type(2)

т.е.

items = soup.select("h1 span:nth-of-type(2)")

Затем итерируйте список.

Если возможно только одно совпадение, просто:

item = soup.select_one("h1 span:nth-of-type(2)")
print(item.text.strip())
1 голос
/ 06 марта 2019

Вы можете использовать функцию find_all () , чтобы получить все теги span в списке, а затем использовать атрибут .text, чтобы получить текст.

subcat.find_all('span')[1].text

Должен выдать

 Mobile Phones

Демо

from bs4 import BeautifulSoup
html="""
<h1>
<a href="//www.aliexpress.com/category/509/cellphones-telecommunications.html" title="Cellphones &amp; Telecommunications"> Cellphones &amp; Telecommunications</a>
<span class="divider">&gt;</span> <span> Mobile Phones</span>
</h1>
"""
soup=BeautifulSoup(html,'html.parser')
h1=soup.find('h1')
print(h1.find_all('span')[1].text.strip())

Выход

Mobile Phones
0 голосов
/ 06 марта 2019

Другим решением будет использование CSS-селекторов, которые позволяют вам снова и снова избавляться от каскадирования.В вашем случае это:

results = soup.select(".bread-block-wrap .breadcrumb-keyword-bg .breadcrumb-keyword.list-responsive-container .ui-breadcrumb h1 span")

вернет два тега span в списке.Затем вы можете просто использовать второй.

У вас, конечно, есть много других полезных инструментов для работы, когда вы выбираете селекторы CSS.Просто найдите таблицу выбора CSS и наслаждайтесь.

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