Python. Как вывести имя исполнителя
Имеется парсер, результатом выдачи которого является большое количество подобных дивов:
<div class="dataZD">
Для: Олег . Дата заказа: 2020-05-27 (16:21:34)
<br/>
</div>
<div class="dataZD">
Для: Анна . Дата заказа: 2020-05-27 (16:18:21)
<br/> Дата взятия заказа: 2020-05-27 (16:36:58) <br/>
Исполнитель: Иван
</div>
Как мне вывести имя исполнителя, учитывая что в некоторых дивах он отсутствует?
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Можно вытащить регулярками нужные поля.
Пример:
import re
from bs4 import BeautifulSoup
html = """
<div class="dataZD">
Для: Олег . Дата заказа: 2020-05-27 (16:21:34)
<br/>
</div>
<div class="dataZD">
Для: Анна . Дата заказа: 2020-05-27 (16:18:21)
<br/> Дата взятия заказа: 2020-05-27 (16:36:58) <br/>
Исполнитель: Иван
</div>
"""
root = BeautifulSoup(html, 'html.parser')
for x in root.select('div.dataZD'):
text = x.get_text(strip=True)
print(text)
m = re.search('Для: (\w+)\s*\.', text)
if m:
customer = m.group(1)
print(f'Для: "{customer}"')
m = re.search('Дата заказа: (\d{4}-\d{2}-\d{2} \(\d{2}:\d{2}:\d{2}\))', text)
if m:
date = m.group(1)
print(f'Дата заказа: "{date}"')
m = re.search('Исполнитель: (\w+)\s*', text)
if m:
executor = m.group(1)
print(f'Исполнитель: "{executor}"')
print()
Результат:
Для: Олег . Дата заказа: 2020-05-27 (16:21:34)
Для: "Олег"
Дата заказа: "2020-05-27 (16:21:34)"
Для: Анна . Дата заказа: 2020-05-27 (16:18:21)Дата взятия заказа: 2020-05-27 (16:36:58)Исполнитель: Иван
Для: "Анна"
Дата заказа: "2020-05-27 (16:18:21)"
Исполнитель: "Иван"