从HTML重新发送电子邮件

时间:2016-04-15 08:15:34

标签: python regex

我正在尝试从一组源代码中复制电子邮件地址。可以将数据作为<a href>标记的属性找到。就是这样:data-email="example@email.com"

我对正则表达式很陌生,想出了这个:/\w+\s*=\s*".*?"/但它似乎不起作用。全面了解这一切都很困难。

我该怎么办?

感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

如果您的源代码是HTML,那么使用HTML解析器会更容易吗?您可以使用lxml,例如:

from lxml import etree

html = etree.HTML("""
<html>
    <head>
        <title>History of Roundish Stones in the Paleozoic Era</title>
    </head>
    <body>
        <a href="#" data-email="example@email.com">Andrew S. Johnson</a>
        <a href="#" data-email="other-example@email.com">E. Idle</a>
    </body>
</html>
""")

print(html.xpath('//@data-email'))

打印:

['example@email.com', 'other-example@email.com']

答案 1 :(得分:0)

如果我的问题正确无误,那么您可能需要提取电子邮件地址:

>>> import re
>>> print(re.findall(r'(?<=data-email=")[^"]*(?=")', '<b><a href="/abcd.html" data-email="example@email.com">abcd</a></b>'))
['example@email.com']

答案 2 :(得分:0)

您可以使用以下内容获取电子邮件地址。 如果你能发布一些例子,我不确定你究竟在处理它会是多么好。但是你可以尝试这个,它可能对你有帮助。

re.compile("([\w\-\.]+@(\w[\w\-]+\.)+[\w\-]+)")

这有助于您获得"example@email.com"

答案 3 :(得分:0)

BeautifulSoup是你的朋友:

from bs4 import BeautifulSoup as BS

emails = []
soup = BS(html_string, 'html5lib')
for a in soup.findAll('a'):
    try:
        emails.append(a['data-email'])
    except KeyError:
        continue