如何解决imap_tools 从电子邮件中抓取链接需要很长时间
我正在使用 imap_tools 从电子邮件中获取链接。电子邮件很小,只有很少的文字、图形等。也不是很多,一天大约有 20-40 封。
收到新电子邮件时,抓取链接需要 10 到 25 秒的时间。这似乎很长。我原以为它不到 2 秒,而且速度很重要。
铌。这是一个共享邮箱,我不能简单地获取看不见的电子邮件,因为其他用户通常会在抓取工具到达之前打开电子邮件。
谁能看出问题是什么?
import pandas as pd
from imap_tools import MailBox,AND
import re,time,datetime,os
from config import email,password
uids = []
yahooSmtpServer = "imap.mail.yahoo.com"
data = {
'today': str(datetime.datetime.today()).split(' ')[0],'uids': []
}
while True:
while True:
try:
client = MailBox(yahooSmtpServer).login(email,password,'INBox')
try:
if not data['today'] == str(datetime.datetime.today()).split(' ')[0]:
data['today'] = str(datetime.datetime.today()).split(' ')[0]
data['uids'] = []
ds = str(datetime.datetime.today()).split(' ')[0].split('-')
msgs = client.fetch(AND(date_gte=datetime.date.today()))
for msg in msgs:
links = []
if str(datetime.datetime.today()).split(' ')[0] == str(msg.date).split(' ')[0] and not msg.uid in data['uids']:
mail = msg.html
if 'order' in mail and not 'cancel' in mail:
for i in re.findall(r'(https?://[^\s]+)',mail):
if 'pick' in i:
link = i.replace('"',"")
link = link.replace('<','>').split('>')[0]
print(link)
links.append(link)
break
data['uids'].append(msg.uid)
scr_links = pd.DataFrame({'Links': links})
scr_links.to_csv('Links.csv',mode='a',header=False,index=False)
time.sleep(0.5)
except Exception as e:
print(e)
pass
client.logout()
time.sleep(5)
except Exception as e:
print(e)
print('sleeping for 5 sec')
time.sleep(1)
解决方法
我认为这是电子邮件服务器限制超时。
尝试查看 IMAP IDLE。
imap_tools 做不到,但你可能想实现它 :D
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。