用到的包
#请先在窗口执行import xxx,然后安装缺失的第三方包
import requests
from pyquery import PyQuery as pq
import datetime
import schedule
import time
import smtplib
from email.mime.text import MIMEText
from email.header import Header
日期与请求头
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36'
}
date = datetime.datetime.now().strftime('%Y-%m-%d')
爬取热搜
def Weibo_Spider():
with open(date + '.txt','wt') as f:
f.close()
url = 'https://s.weibo.com/top/summary'
response = requests.get(url,headers = headers)
response.encoding = response.apparent_encoding
if response.status_code == 200:
res = response.text
else:
print('error')
doc = pq(res)
td = doc('.td-02 a').items()
for item in td:
title = item.text()
href = 'https://s.weibo.com' + item.attr('href')
content = title + '\n' + href + '\n\n'
with open(date + '.txt','a') as f:
f.write(content)
f.close()
发送邮件
def send_email():
mailhost = 'smtp.163.com'
mail = smtplib.SMTP()
mail.connect(mailhost,465)
sender = ''
password = ''
receiver = ''
mail.login(sender, password)
f = open(date + '.txt','r')
news = f.read()
message = MIMEText(news,'plain','utf-8')
subject = '今日热搜'
message['Subject'] = Header(subject,'utf-8')
try:
mail.sendmail(sender,receiver,message.as_string())
print('邮件发送完毕')
except Exception as e:
print('邮件发送失败\n' + e)
mail.quit()
控制与定时
def job():
print('开始发送邮件')
Weibo_Spider()
send_email()
print(date + '任务完成')
if __name__ == '__main__':
while True:
schedule.every().day.at("08:00").do(job)
time.sleep(1)
来自CSDN,搭配腾讯云函数使用更佳