admin管理员组文章数量:1529449
零、前言
0、自己之前有很多爬虫经历,所以爬虫这一块没啥大问题。
1、可能 python编写邮箱发送功能 会报错。网易的错误代码 是554 ,说的是你的代码可能疑似广告行为,被拦截了(详细:https://help.mail.163/faqDetail.do?code=d7a5dc8471cd0c0e8b4b8f4f8e49998b374173cfe9171305fa1ce630d7f67ac28218e37dcd9adbaa)。后面换成QQ邮箱就好了。
2、需要在 QQ 邮箱开启POP3/SMTP服务 (进入自己的QQ邮箱网页版==>点击'账号'==>点击'设置'==>点击'开启POP3/SMTP服务'),接着会弹出授权码,一定要记下来,因为编写py代码要用到!!
一、整体思路
0、自己在本机上测试成功爬取数据和发送邮箱成功后,再把相关的环境、代码部署到自己的服务器上
1、在linux服务器上,添加这个 py 脚本,这样就能在邮箱上定时收到自己想要的互联网内容了,比今日头条的推荐算法更精准哦!!
二、具体实现以及相关代码(以爬取 新浪热搜 为例)。
0、安装相关的库
from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL
import requests
import re
1、编写 爬取新浪热搜 的代码
# 根据不同的 url 获取到原先的 html 代码
def get_html(url):
content = requests.get(url).text
return content
# 根据 匹配的模式 pattern 、 要进行匹配的原文 pattern 、 是哪个咨询index 得到我们感兴趣的内容(格式化的) ===》 my_content
def get_final_content(pattern, html_content, index):
items = re.findall(pattern, html_content)
final_content = ''
if(index == 1):
final_content = get_sina_content(items)
# elif(index == 2):
# final_content = get_w3cplus_content(items)
# 返回每一个网站 所爬取的 格式化内容
return final_content
# 获取新浪微博的 热搜
def get_sina_content(items):
# 只获取 新浪热搜的 前5条
count = 0
# 前缀网址 'https://s.weibo'
basic_url = 'https://s.weibo'
# 返回感兴趣的内容 ===》 格式化的
result_content = ''
for item in items:
count += 1
if(count < 6):
# print(item[0], item[1], item[2])
result_content += (str(count) + '、' + item[1] +'\t热度:' + item[2] + '\t链接:' + basic_url + item[0] + '\n')
# print(result_content)
return result_content
# 爬取新浪微博热搜的 函数入口
def main_sina():
url = 'https://s.weibo/top/summary'
html_content = get_html(url)
# print(html_content)
pattern = repile('.*?<td class="td-02">.*?<a href="(.*?)" target="_blank">(.*?)</a>.*?<span>(.*?)</span>', re.S)
final_content = get_final_content(pattern, html_content, 1)
print(final_content)
return final_content
2、编写 发送邮箱 的代码
def send_email(sender_qq, pwd, receiver, mail_title, mail_content):
# qq邮箱的服务器
host_server = 'smtp.qq'
sender_qq_mail = sender_qq + '@qq'
# ssl 登录
smtp = SMTP_SSL(host_server)
smtp.set_debuglevel(1)
smtp.ehlo(host_server)
smtp.login(sender_qq, pwd)
msg = MIMEText(mail_content, 'plain', 'utf-8')
msg["Subject"] = Header(mail_title, 'utf-8')
msg["From"] = sender_qq_mail
msg["To"] = receiver
smtp.sendmail(sender_qq_mail, receiver, msg.as_string())
smtp.quit()
3、最终的函数入口
if __name__ =='__main__':
# sender_qq 为发件人的 qq 号码
sender_qq = 'xxx'
# pwd 为 qq 邮箱的授权码
pwd = 'xxx'
# 收件人的邮箱 receiver
receiver = 'xxx'
# 邮件正文
mail_content = main_sina()
mail_title = 'xxx'
send_email(sender_qq, pwd, receiver, mail_title, mail_content)
4、在linux(自己的是 centos7.2+python 3.7)服务器上为该 py 文件添加定时脚本
1)当前路径所含的文件
2)设置定时脚本(crontab -e 。详细参数参考:http://www.linuxso/command/crontab.html);尽量两个文件写绝对路径,不然可能会出现问题!!我这里是设置过 环境变量啥的,可以直接写 python ,它就自动帮我调用 python3 !!
5、效果截图
总结:
0、自己也在玩微信公众号(IT三少),粉丝达到过5.8K+,有在盈利哦;欢迎学习交流!自己也上线过小程序(项目地址:https://github/CYBYOB)。本人QQ:1520112971,邮箱:1520112971@qq
1、虽说一路坑不少,但是凭借自己的较强的解决问题能力还是很快搞定了,以后再一些 知乎、开源中国等的爬取,每天岂不是美滋滋。
2、最近在玩 机器学习 。想训练出一个 “伪生命公式”,因为受启发于 天才J 这部网剧(感觉脑洞挺大的,弄出来公式,有空就把完整代码放在CSDN上)。
版权声明:本文标题:linux定时爬虫并把内容发给自己的邮箱 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1726721842a1081885.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论