在我们抓取领英(LinkedIn)数据的时候,可能需要账号注册。
通过邮箱注册的时候,领英官网会发送激活链接
我们需要通过程序自动拿到此激活链接,
拿到以后在此激活页面访问,即可激活邮箱账户,
但是通过程序拿到的邮箱文本内容中的链接是经过混淆加密的,
经过一番研究以后成功进行解密。
直接上可以解密的代码:
import imaplib,re
def get_email_href(email, password):
try:
conn = imaplib.IMAP4_SSL("imap-mail.outlook.com", 993)
conn.login(email, password)
print('邮箱登录成功!')
INBOX = conn.select("INBOX")
type, data = conn.search(None, 'ALL')
msgList = data[0].split()
last = msgList[len(msgList) - 1]
type, datas = conn.fetch(last, '(RFC822)')
with open('ema2.txt', 'w')as f:
f.write(datas[0][1].decode('utf-8'))
with open('ema2.txt')as f:
res = f.read()
a = res.replace('\n', 'nulL').replace("nulLnulLnulLnulL", 'NULL')
a = a.replace("nulL", '')
b = re.findall('"(https://www.linkedin.com/comm/psettings/email/confirm.*?)"', a)[0]
text1 = b.replace("=3D", '=').replace('amp;', '')
href = text1.replace('=', '').replace('?sig', '?sig=').replace('&id', '&id=').replace('&ct','&ct=').replace('&midToken', '&midToken=').replace('&trk', '&trk=').replace('&trkEmail', '&trkEmail=').replace('&lipi','&lipi=')
conn.logout()
return href
except:
return "null"
首先导入 imaplib库用来获取邮箱中的邮件
(不会用,可以看我的另一篇文章 python收邮件读邮件imaplib)
get_email_href 函数需要邮箱账号和密码两个参数
切记 :
不同的邮箱需要把imaplib.IMAP4_SSL函数中的参数更改为自己的邮箱服务
我使用的是hotmail的邮箱 故这样使用
conn = imaplib.IMAP4_SSL("imap-mail.outlook.com", 993)
不知道邮箱服务的端口和服务地址的,
去百度或者自己邮箱官网查看一下就行。