Извлеките текст из href (BeautifulSoup)

#html #beautifulsoup

Вопрос:

Я хочу извлечь ТЕКСТ из этого HTML — элемента:

<a href="mailto:mail@1st-architects.com">mail@1st-architects.com</a>

all_profiles.find("a", {"???":"???"}).get_text(strip=True)

Учтите, что у меня есть список из 1000 компаний, и у каждой компании есть href=»mailto:mail@1st-architects.com» по-другому.

Ответ №1:

Вы можете объединить css-селектор атрибут = значение, используя операторы, начинающиеся с ^ и заканчивающиеся на$, для сопоставления в hrefs с указанными подстроками

 emails = [i.text for i in all_profiles.select("[href^=mailto][href$='@1st-architects.com']")]
 

Ответ №2:

Вы могли бы попробовать что-то вроде этого.

Этот код выведет текст всех <a> сообщений в href виде электронного письма.

 import re
from bs4 import BeautifulSoup
s = '''
<a href="mailto:mail@1st-architects.com">mail@1st-architects.com</a>
<a href="mailto:second_mail@2nd-architects.com">second_mail@2nd-architects.com</a>
<a href="#">Some Link</a>
<a href="mailto:mail@example.com">mail@example.com</a>
'''
soup = BeautifulSoup(s, 'lxml')
a = soup.find_all('a', attrs= {'href': re.compile(r'^mailto:')})

for i in a:
    print(i.text.strip())
 
 mail@1st-architects.com
second_mail@2nd-architects.com
mail@example.com