本文将使用Python爬取百度新闻搜索指数排名前50的新闻,并通过服务器运行,每天定时发送到指定邮箱。
先上代码:
# -*- coding:utf-8 -*-
import requests,os,re,email,smtplib
EMAIL_ADDRESS='****@'
EMAIL_PASSWORD='***'
s=smtplib.SMTP(host='',port=587)
s.starttls()
s.login(EMAIL_ADDRESS,EMAIL_PASSWORD)
print('Connected~')
url='/buzz?b=341&c=513&fr=topbuzz_b1'
r=requests.get(url)
txt=r.content.decode('GBK')
pt=pile('href_top=".*?">(.*?)
title=re.findall(pt,txt)
pt1=pile('href="(.*?)" href_top')
urls=re.findall(pt1,txt)
#print(len(urls))
pt2=pile('icon-....">(.*?)
rise=re.findall(pt2,txt)
#print(title,rise,urls)
i=50
mss=''
for x in range(i):
ma=(str(x+1),title[x],rise[x],urls[x])
ms=', '.join(ma)
mss+=(ms+'\n')
msgs=mss
msg=email.message_from_string(msgs)
msg['From']=EMAIL_ADDRESS
msg['To']=EMAIL_ADDRESS # add who need receive the eamil
s.sendmail(EMAIL_ADDRESS,EMAIL_PASSWORD,msg.as_string())
s.quit()
print('Your data sent to %s',EMAIL_ADDRESS)
主要使用了requests,smtplib, re,email模块,只需要30几行代码就可以实现。
接下来我说下怎么在服务器上设置:
crontab -e这个命令可以搜索了解下怎么使用的,
在我们服务器下面输入这个命令 crontab -e
* * * * * program
进入编辑模式按 i 键
30 07* * * /usr/local/bin/python3 /usr/temp/baidu.py 每天早上7:30分运行一次
然后:wq 保存,就可以执行了。另外需要注意的是一定要写成绝对路径,这样保证程序能运行。
最后上一张截图