大佬教程收集整理的这篇文章主要介绍了【python实战】不玩微博,一封邮件就能知道实时热榜,天秀吃瓜,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
❤️欢迎订阅《从实战学python》专栏c;用python实现办公自动化、数据可视化、人工智能等各个方向的实战案例c;有趣又有用!❤️
更多精品专栏简介点这里
在生活中我是一个不太喜欢逛娱乐平台的人c;抖音、快手、微博我手机里都没装c;甚至微信朋友圈都不看c;但是自从开始写博客c;有些热度不得不蹭。
所以就有了这样一个需求c;能不能让微博主动把热榜推给我呢?肯定是不行c;微博又不是我家开的c;怎么办呢?
人生苦短c;我用python。方案如下:
话不多说c;开干
微博的热榜并没有登录验证c;操作起来比较简单c;一个请求过去c;然后解析
html
就行了。以前我们都是用
xpath
解析c;今天带大家体验一下BeautifulSoup
热榜url:http://s.weibo.com/top/sumMary
请求参数:
data = {@H_673_58@
'cate': 'Realtimehot'
}
请求headers
:
headers = {@H_673_58@
'user-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
alt+command+i
打开开发者工具
定位到热榜所在的<div>
里c;发现热度和热榜内容都位于<a>
标签。一条热榜是一个<tr>
。
分析完这些c;我们就可以解析网页了。
def get_content():
try:
res = requests.get('http://s.weibo.com/top/sumMary?', params=data, headers=headers)
if res.status_code == 200:
html = res.text
soup = BeautifulSoup(html, 'lxml')
tr = soup.find(id='pl_top_realtimehot').find_all('tr', class_="")
hotSearch = ""
for i, item in enumerate(tr):
if i > 0:
title = item.find('a').get_text()
url = "https://s.weibo.com" + item.find('a').attrs['href']
hot = item.find('span').get_text()
id = item.find('td', class_="td-01 ranktop").get_text()
hotSearch += id + 't' + title + "t" + hot + "t" + url + "n"
print(hotSearch)
return hotSearch
except:
print("访问失败")
看一下控制台输出:
包含 排名、内容、热度、urlc;下面只需要将这些内容发送到邮箱就可以了。
学会用python发邮件可以帮助我们完成许多意想不到的操作c;大家要认真看哦!
首先需要配置我们的邮箱c;开启smtp
协议c;smtp
是一种提供可靠且有效的电子邮件传输的一种邮件服务c;主要用于系统之间的邮件信息传递c;并提供有关来信的通知。
具体邮件的发送我们通过
smtplib
这个库来实现
pip install smtplib
配置邮箱信息:
mail_host = 'smtp.qq.com'
mail_user = '2865866423'
#将pass替换成刚刚保存的key
mail_pass = 'your pass'
qq邮箱支持自己给自己发邮件
# 邮件内容设置c;将第一个参数修改成你要发送的内容即可
message = MIMEText(message, 'plain', 'utf-8')
# 邮件主题
message['Subject'] = '微博热搜'
# 发送方信息
message['From'] = sender
# 接受方信息
message['To'] = receivers[0]
设置好这些c;只需要登录邮箱服务器发送就好了
def send_mail(message):
mail_host = 'smtp.qq.com'
mail_user = ''
mail_pass = ''
# 发送方c;可以自己给自己发
sender = '@qq.com'
# 邮件接受方邮箱地址c;可多写
receivers = ['@qq.com']
# 邮件内容设置c;将第一个参数修改成你要发送的内容即可
message = MIMEText(message, 'plain', 'utf-8')
# 邮件主题
message['Subject'] = '微博热搜'
# 发送方信息
message['From'] = sender
# 接受方信息
message['To'] = receivers[0]
try:
smtpObj = smtplib.SMTP_SSL(@H_113_56@mail_host)
# 登录到服务器
smtpObj.login(@H_113_56@mail_user, mail_pass)
# 发送
smtpObj.sendmail(
sender, receivers, message.as_String())
# 退出
smtpObj.quit()
print('success')
except smtplib.SMTPException as e:
print('error', e) # 打印错误
已经收到了主题为「微博热搜」的邮件
命令
crontab -e
0 * * * * python /hot_monitor.py
关于0 * * * *
这几个参数的作用c;请自行百度。
关于云服务器c;可以参考一条这篇文章《阿里云服务器购买及SSH免密登录》进行购买和配置。
⭐今天是坚持刷题更文的第20/100天
⭐各位的点赞、关注、收藏、评论、订阅就是一条创作的最大动力
为了回馈各位粉丝c;礼尚往来c;给大家准备了一条多年积累下来的优质资源c;包括 学习视频、面试资料、珍藏电子书等
大家可以评论留言或者私信我领取
以上是大佬教程为你收集整理的【python实战】不玩微博,一封邮件就能知道实时热榜,天秀吃瓜全部内容,希望文章能够帮你解决【python实战】不玩微博,一封邮件就能知道实时热榜,天秀吃瓜所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。