【发布时间】:2021-10-09 07:08:05
【问题描述】:
我正在尝试使用 BeautifulSoup 库从 webpage 中挖出四个字段。很难单独识别这些字段,这就是我寻求帮助的原因。
有时两封电子邮件都存在,但并非总是如此。我使用索引来捕获此示例的电子邮件,但肯定这是最糟糕的想法。此外,通过以下尝试,我只能解析电子邮件的标题,而不是电子邮件地址。
我已经尝试过(最小工作示例):
from bs4 import BeautifulSoup
html = """
<p>
<strong>
Robert Romanoff
</strong>
<br/>
146 West 29th Street, Suite 11W
<br/>
New York, New York 10001
<br/>
Telephone: (718) 527-1577
<br/>
Fax: (718) 276-8501
<br/>
Email:
<a href="mailto:robert@absol.com">
robert@absol.com
</a>
<br/>
Additional Contact: William Locantro
<br/>
Email:
<a href="mailto:bill@absol.com">
bill@absol.com
</a>
</p>
"""
soup = BeautifulSoup(html,"lxml")
container = soup.select_one("p")
contact_name = container.strong.text.strip()
contact_email = [i for i in container.strings if "Email" in i][0].strip()
additional_contact = [i.strip() for i in container.strings if "Additional Contact" in i.strip()][0].strip('Additional Contact:')
additional_email = [i for i in container.strings if "Email" in i][1].strip()
print(contact_name,contact_email,additional_contact,additional_email)
当前输出:
Robert Romanoff Email: William Locantro Email:
预期输出:
Robert Romanoff robert@absol.com William Locantro bill@absol.com
【问题讨论】:
-
你能分享一下网址吗?很难给出适用于所有情况的解决方案。
-
查看编辑@Ram。
标签: python python-3.x web-scraping beautifulsoup