我第一次使用BeautifulSoup,试图从soup对象中收集一些数据,如电子邮件、电话号码和邮件地址。
使用正则表达式,我可以识别电子邮件地址。我查找电子邮件的代码是:
def get_email(link):
mail_list = []
for i in link:
a = str(i)
email_pattern = re.compile("<a\s+href=\"mailto:([a-zA-Z0-9._@]*)\">", re.IGNORECASE)
ik = re.findall(email_pattern, a)
if (len(ik) == 1):
mail_list.append(i)
else:
pass
s_email = str(mail_list[0]).split('<a href="')
t_email = str(s_email[1]).split('">')
print t_email[0]
现在,我还需要收集电话号码,邮寄地址和网址。我认为在美联一定有一个简单的方法找到这些具体的数据。
html页面示例如下:
<ul>
<li>
<span>Email:</span>
<a href="mailto:abc@gmail.com">Message Us</a>
</li>
<li>
<span>Website:</span>
<a target="_blank" href="http://www.abcl.com">Visit Our Website</a>
</li>
<li>
<span>Phone:</span>
(123)456-789
</li>
</ul>
使用BeatifulSoup,我试图收集电子邮件、网站和电话的跨度值。
提前谢谢。
代码中最明显的问题是,将表示链接的对象转换回HTML,然后再次使用正则表达式对其进行解析,这忽略了首先使用BeautifulGroup的大部分要点。您可能需要使用正则表达式来处理
href
属性的内容,但仅此而已。而且,else: pass
是不必要的-您可以完全忽略它。下面是一些代码,可以实现您想要的功能,这可能是一个有用的起点:
它将为每个找到的联系人生成一个字典列表,在这种情况下,它只是:
相关问题 更多 >
编程相关推荐