SMT*_*MTH 5 python regex web-scraping python-3.x
我正在尝试使用请求和 re 模块从某些站点的登录页面捕获电子邮件地址。这是[\w\.-]+@[\w\.-]+我在脚本中用来捕获它们的模式。
当我运行脚本时,我确实得到了电子邮件地址。但是,我也得到了一些类似于电子邮件地址的不需要的东西,但实际上它们不是,因此我想摆脱它们。
import re
import requests
links = (
'http://www.acupuncturetx.com',
'http://www.hcmed.org',
'http://www.drmindyboxer.com',
'http://wendyrobinweir.com',
)
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}
for link in links:
r = requests.get(link,headers=headers)
emails = re.findall(r"[\w\.-]+@[\w\.-]+",r.text)
print(emails)
Run Code Online (Sandbox Code Playgroud)
电流输出:
['react@16.5.2', 'react-dom@16.5.2', 'bai@acupuncturetx.com', 'bai@acupuncturetx.com', 'bai@acupuncturetx.com', 'bai@acupuncturetx.com']
['hh-logo@2x.png', 'hh-logo@2x.png', 'hh-logo@2x.png', 'hh-logo@2x-300x47.png']
['leaflet@1.7.1']
['8b4e078a51d04e0e9efdf470027f0ec1@sentry.wixpress.com', 'requirejs-bolt@2.3.6', 'wendyrobin16@gmail.com', 'wendyrobin16@gmail.com', 'wendyrobin16@gmail.com', 'wendyrobin16@gmail.com', 'wendyrobin16@gmail.com', 'wendyrobin16@gmail.com', 'wixstores-client-cart-icon@1.797.0', 'wixstores-client-gallery@1.1634.0']
Run Code Online (Sandbox Code Playgroud)
预期输出:
['bai@acupuncturetx.com', 'bai@acupuncturetx.com', 'bai@acupuncturetx.com', 'bai@acupuncturetx.com']
[]
[]
['wendyrobin16@gmail.com', 'wendyrobin16@gmail.com', 'wendyrobin16@gmail.com', 'wendyrobin16@gmail.com', 'wendyrobin16@gmail.com', 'wendyrobin16@gmail.com']
Run Code Online (Sandbox Code Playgroud)
如何使用正则表达式仅捕获电子邮件地址并删除不需要的内容?
离开您离开的地方,您可以使用简单的检查器来验证它是否确实是有效的电子邮件。
首先我们定义检查函数:
def check(email):
regex = '^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w+$'
if re.match(regex, email):
return True
else:
return False
Run Code Online (Sandbox Code Playgroud)
然后我们用它来检查您的电子邮件列表中的项目:
for link in links:
r = requests.get(link, headers=headers)
emails_list = re.findall(r"[\w\.-]+@[\w\.-]+", r.text)
emails_list = [email for email in emails_list if check(email)]
print(emails_list)
Run Code Online (Sandbox Code Playgroud)
['bai@acupuncturetx.com', 'bai@acupuncturetx.com', 'bai@acupuncturetx.com', 'bai@acupuncturetx.com']
[]
[]
['wendyrobin16@gmail.com', 'wendyrobin16@gmail.com', 'wendyrobin16@gmail.com', 'wendyrobin16@gmail.com', 'wendyrobin16@gmail.com', 'wendyrobin16@gmail.com']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |