У меня такая же проблема, и я думаю, что результат будет всегда «отменен», потому что даже если отправлено письмо или нет, активность будет убита.
Вы можете использовать функцию 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 & Telecommunications"> Cellphones & Telecommunications</a>
<span class="divider">></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
Другим решением будет использование CSS-селекторов, которые позволяют вам избавляться от каскадирования снова и снова. В вашем случае это:
results = soup.select(".bread-block-wrap .breadcrumb-keyword-bg .breadcrumb-keyword.list-responsive-container .ui-breadcrumb h1 span")
вернет два тега span
в списке. Затем вы можете просто использовать второй.
У вас, конечно, есть много других полезных инструментов для работы, когда вы выбираете селекторы CSS. Просто найдите таблицу выбора CSS и наслаждайтесь.
Вы можете использовать селектор 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())