#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