Текущий Python скрипт:Python BeautifulSoup - Как извлечь этот текст
import win_unicode_console
win_unicode_console.enable()
import requests
from bs4 import BeautifulSoup
data = '''
<div class="info">
<h1>Company Title</h1>
<p class="type">Company type</p>
<p class="address"><strong>ZIP, City</strong></p>
<p class="address"><strong>Street 123</strong></p>
<p style="margin-top:10px;"> Phone: <strong>(111) 123-456-78</strong><br />
Fax: <strong>(222) 321-654-87</strong><br />
Phone: <strong>(333) 87-654-321</strong><br />
Fax: <strong>(444) 000-1111-2222</strong><br />
</p>
<p style="margin-top:10px;"> E-mail: <a href="mailto:[email protected]">[email protected]</a><br />
E-mail: <a href="mailto:[email protected]">[email protected]</a><br />
</p>
<p> Web: <a href="http://www.domain.com" target="_blank">www.domain.com</a><br />
</p>
<p style="margin-top:10px;"> ID: <strong>123456789</strong><br />
VAT: <strong>987654321</strong> </p>
<p class="del" style="margin-top:10px;">Some info:</p>
<ul>
<li><a href="#category">» Category</a></li>
</ul>
</div>
'''
html = BeautifulSoup(data, "html.parser")
p = html.find_all('p', attrs={'class': None})
for pp in p:
print(pp.contents)
возвращает следующее:
[' Phone: ', <strong>123-456-78</strong>, <br/>, '\n\t\tFax: ', <strong>321-654-87</strong>, <br/>, '\n\t\tPhone: ', <strong>87-654-321</strong>, <br/>, '\n\t\tFax: ', <strong>000-1111-2222</strong>, <br/>, '\n']
[' E-mail: ', <a href="mailto:[email protected]">[email protected]</a>, <br/>, '\n\tE-mail: ', <a href="mailto:[email protected]">[email protected]</a>, <br/>, '\n']
[' Web: ', <a href="http://www.domain.com" target="_blank">www.domain.com</a>, <br/>, '\n']
[' ID: ', <strong>123456789</strong>, <br/>, '\n\t\tVAT: ', <strong>987654321</strong>, ' ']
Проблема: Я не знаю, как извлечь текст для телефона, факса и электронной почты, id, vat и создать массив из них, например:
phones = [123-456-78, 87-654-321]
faxes = [321-654-87, 000-1111-2222]
emails = [[email protected], [email protected]]
id = [123456789]
vat = [987654321]
Интересно, большое спасибо! – RhymeGuy
Нет, пожалуйста. –
Извините, я получаю ошибку, когда номер телефона похож на '(111) 222-333-4444' – RhymeGuy