Python 爬取百度 搜索风云榜 新闻并 自动推送 到邮箱

本文介绍如何利用Python爬取百度搜索风云榜的新闻,结合服务器上的cron定时任务,每天7:30自动将结果发送至指定邮箱。主要涉及requests、smtplib、re和email模块。

本文将使用Python爬取百度新闻搜索指数排名前50的新闻,并通过服务器运行,每天定时发送到指定邮箱。

先上代码:

# -*- coding:utf-8 -*-
import requests,os,re,email,smtplib
EMAIL_ADDRESS='****@hotmail.com'
EMAIL_PASSWORD='***'
s=smtplib.SMTP(host='smtp.office365.com',port=587)
s.starttls()
s.login(EMAIL_ADDRESS,EMAIL_PASSWORD)
print('Connected~')
url='http://top.baidu.com/buzz?b=341&c=513&fr=topbuzz_b1'
r=requests.get(url)
txt=r.content.decode('GBK')
pt=re.compile('href_top=".*?">(.*?)<')
title=re.findall(pt,txt)
pt1=re.compile('href="(.*?)" href_top')
urls=re.findall(pt1,txt)
#print(len(urls))
pt2=re.compile('icon-....">(.*?)</span')
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 保存,就可以执行了。另外需要注意的是一定要写成绝对路径,这样保证程序能运行。

最后上一张截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值