извлечение данных из следующего диапазона в том же теге h1 в BeautifulSoup

У меня такая же проблема, и я думаю, что результат будет всегда «отменен», потому что даже если отправлено письмо или нет, активность будет убита.

0
задан QHarr 6 March 2019 в 19:51
поделиться

3 ответа

Вы можете использовать функцию 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
ответ дан Bitto Bennichan 6 March 2019 в 19:51
поделиться

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

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

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

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

0
ответ дан Mohammad Razzaghnoori 6 March 2019 в 19:51
поделиться

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

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())
0
ответ дан QHarr 6 March 2019 в 19:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: