本文将使用Python爬取百度新闻搜索指数排名前50的新闻,并通过服务器运行,每天定时发送到指定邮箱。
先上代码:
# -*- coding:utf-8 -*-import requests,os,re,email,smtplibEMAIL_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-....">(.*?)</span')rise=re.findall(pt2,txt)#print(title,rise,urls)i=50mss=''for x in range(i):ma=(str(x+1),title[x],rise[x],urls[x])ms=', '.join(ma)mss+=(ms+'\n')msgs=mssmsg=email.message_from_string(msgs)msg['From']=EMAIL_ADDRESSmsg['To']=EMAIL_ADDRESS # add who need receive the eamils.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 保存,就可以执行了。另外需要注意的是一定要写成绝对路径,这样保证程序能运行。
最后上一张截图