【问题标题】:how to Parse emails from mailto urls in Python如何在 Python 中解析来自 mailto url 的电子邮件
【发布时间】:2015-03-25 21:48:09
【问题描述】:

我正在尝试解析来自网页的电子邮件。 我的代码:

            import urllib2,cookielib
            import re

            site= "http://www.traidnt.net/vb/traidnt207743"
            hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
                    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                    'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
                    'Accept-Encoding': 'none',
                    'Accept-Language': 'en-US,en;q=0.8',
                    'Connection': 'keep-alive'}

            req = urllib2.Request(site, headers=hdr)

            page = urllib2.urlopen(req)

            content = page.read()

            links = re.findall('mailto:.+?@.+.', content)

            for link in links:
                print link[7:-1]

结果如下:

email1@
email2@
email3@
...

但我需要获取所有带有完整表格的电子邮件。 请问我怎样才能获得所有电子邮件的完整形式。

谢谢!

【问题讨论】:

标签: python python-2.7 urllib2 urllib cookielib


【解决方案1】:

我刚刚在您的代码中添加了以下代码,它运行良好:

regexp = re.compile(("mailto:([a-z0-9!#$%&'*+\/=?^_`{|}~-]+@[a-z0-9]+\.[a-zA-Z0-9-.]+)"))

links = re.findall(regexp, content)

print links

输出:

['njm-kwt@hotmail.com', 'fnan-ksa@hotmail.com', 'k-w-t7@hotmail.com', 'coool-uae@hotmail.com', 'qsd@hotmail.de', 'o1ooo@hotmail.de', 'm-p-3@hotmail.de', 'ya7oo@hotmail.de', 'g5x@hotmail.de', 'f7t@hotmail.de', 'm2y@hotmail.de', 's2udi@hotmail.de', 'q2tar@hotmail.de', 'kuw2it@hotmail.de', 's2udi@hotmail.fr', 'qxx@hotmail.de', 'y-e-s@hotmail.de', 'y-a@hotmail.de', 'qqj@hotmail.de', 'qjj@hotmail.de', 'admin_vb@hotmail.de', 'eng-vb@hotmail.com', 'a3lantk@hotmail.com', 'a3lnkm@hotmail.com', 't7t@hotmail.de', 'mohamed_fathy41@hotmail.com', 'ox-9@hotmail.com', 'ox-9@hotmail.com']

【讨论】:

  • 您提供的正则表达式是不够的。例如,它将遗漏带有连字符的域名,例如“foo-bar.com”。显然,沿着这些思路有一连串的堆栈溢出答案,@ 987654321@ 和stackoverflow.com/questions/8022530/… 浮现在脑海中(我会从后者[^@\s]+@[^@\s]+\.[^@\s]+ 中制作正则表达式以排除空白,但一般观点是)跨度>
  • @hugo-sousa @bmhkim 它不适用于大多数网站。例如这个网站http://www.hotm-il.com/vb/showthread.php?t=18249
  • 嗯,您是否尝试删除“mailto:”?
  • 我只是在没有 mailto: 的情况下运行它,我得到了这个:['x4r@msn.com', 'x4r@msn.com', 'x4r@msn.com', 'x4r@msn.com',...]
  • @hugo-sousa 所以我需要不止一种方式mailto:([a-z0-9!#$%&'*+\/=?^_{|}~-]+@[a-z0-9]+\.[a-zA-Z0-9-。 ]+)` , ([a-z0-9!#$%&'*+\/=?^_{|}~-]+@[a-z0-9]+\.[a-zA-Z0-9-.]+)` 和 [\w\.-]+@[\w\.-]+ 但可以给我最多捕获更多电子邮件的方法“我计划让我的程序一一使用所有这些方法来捕获更多电子邮件”
【解决方案2】:

你应该使用这样的特殊库

https://pypi.python.org/pypi/urlinfo

并贡献和创建问题以使 Python 变得更好;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 2011-11-03
    • 2011-03-04
    相关资源
    最近更新 更多