很多小伙伴找我问:老铁,这些代码我写的和你一样,为什么我的不行。其实这是最基本的函数,你照葫芦画瓢是没什么多大的作用的。我不会直接告诉你答案也不是我不想告诉你,而是希望你能跟着思路,自己找到答案,这才是真的学会了,掌握了这其中的知识点,下次在遇到就会了,而不是到处去问。如果你还在迷茫,不知道该往哪个方向走,如果你还找不到Python的入门,如果你还在为碰到各种知识点不会而苦恼,那就加小编自己弄的一个交流学习基地吧。大家可以加入交流基地:58937142,里面新手入门资料,可以说从零到项目实战,都是可以免费获取的,还有热心肠的答疑小伙伴为各位免费解答问题,热心肠的小伙伴也是蛮多的。不失为是一个交流的的好地方,小编在这里邀请大家加入我的大家庭。欢迎你的到来。一起交流学习!共同进步!小编等你!

前言

开心做技术

在深入感受到爬虫的乐趣的时候,多想用它干点简单的事情,我非常喜欢浏览某网站的热点新闻,但如果那天学习忙的天花乱缀(chu qu gui hun)的时候,“WC、WC、我错过了什么大事情”,就会错过当时的热点。怎么才能记录下呢!

预期达成效果:

python爬去某网站上的时刻下最热点新闻,存储到文档中。在lunix下定时每隔n小时启用python去爬取新闻,然后用邮件的形式每隔n小时将新闻文档发到自己的邮箱,以便朕统一的查阅。

执行计划:定时执行任务配置【Ubuntu环境下】

发送邮件相关配置

执行脚本编写

python爬虫程序编写

注:一千个人心中有一千个哈姆雷特,一千个人配出一千种错误

1、定时执行任务

在ubuntu相爱使用crontab部署定时任务{使用是linux虚拟机ubuntu。}

cron是一个[守护程序]用于在指定的时间内执行行程类的任务,每一个用户都有一个 crontab 文件,来允许他们指定需要执行的内容和时间,此外,系统也有一个 crontab ,用来允许像交替日志和更新本地数据这样有规则的任务。

插入crontab所需要的知识,只需要看看,了解下后面不明白再来看

服务使用命令:

查看cron的状态

sudo service cron status

开启cron

sudo /etc/init.d/cron start

关闭cron

sudo /etc/init.d/cron stop

重启cron

sudo service cron restart

or重启服务

sudo /etc/init.d/cron restart

查看命令是否运行

pgrep cron

cron设置用法:

crontab -e #设置定时任务crontab -l #查看详情crontab -r : 删除 crontab 文件 不建议手贱去验证他

定时任务的模版样式:

* * * * * command 星星表示通配符 command表示任务

m h dom mon dow command

分 时 日 月 周 命令

m 分钟 0-59第1列表示分钟1~59 每分钟用*或者 */1表示

h 小时 0-23 第2列表示小时1~23(0表示0点)

dow 天1-31 第3列表示日期1~31

mon 月 1-12 第4列表示月份1~12

dow 星期 1-6 0表示星期日第5列标识号星期0~6(0表示星期天)

command 就是要执行的命令 第6列要运行的命令

记住几个特殊符号的含义:

“*”代表取值范围内的数字,

“/”代表”每”,

“-”代表从某个数字到某个数字,

“,”分开几个离散的数字

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每星期六的11 : 00 pm重启apache。

0 */1 * * * /usr/local/etc/rc.d/lighttpd restart

每一小时重启apache

0 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart

晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart

每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart

一月一号的4点重启apac

每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件

50 7 * * * root run-parts /etc/cron.daily [ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]

每天早上6点

0 6 * * * echo 'Good morning.' >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

每两个小时(第一个为15,指明没两个小时的第15min中执行一次)

15 */2 * * * echo 'Have a break now.' >> /tmp/test.txt

晚上11点到早上8点之间每两个小时和早上八点

0 23-7/2,8 * * * echo 'Have a good dream' >> /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 * 1-3 command line

每月(1号凌晨4:42)去执行/etc/cron.monthly内的脚本

42 4 1 * * root run-parts /etc/cron.monthly

注意: 'run-parts'这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。

每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。

5,15,25,35,45,55 16,17,18 * * * command

每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。

12,553 4-91,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt (头大)

自己测试小实验,了解他的大概流程与原理:

root123456@ubuntu:~$ crontab –e

使用vi编译器,第一次使用Ubuntu它会让你选着编译器,不要相信他的箭头(easies?)用了老半天就他最费劲 ,还是选择vi,别问为什么, 顺 手!

在里面最下面键入:测试代码

同时在目录下创建/tmp/1.txt

*/1 * * * * date >> /tmp/1.txt

意思是每一分钟将当时的数据打印到/tmp/1.txt中

然后esc –》:wq退出

保存之后重启服务

root123456@ubuntu:~$ sudo service cron restart

查看结果

root123456@ubuntu:~$ cat /tmp/1.txt

每分钟去打印一次时间到1.txt上

定时执行任务这步就可以确定定时可以使用了额,上面的配置是测试定时任务,认识到定时启动任务是什么形式的,还可以去找其他的例子,变换时间 和执行的命令自己做测试。

这步骤是为了后面做铺垫,是后面的基础,就先在这提前介绍了。因为后面很“激情”来不及详细补充定时功能。

2、发送邮件相关配置

我认为重点和难点就是邮件的发送

自动发送邮件,使用命令行的方式发送邮件。先来陪着两个邮件服务mutt msmtp

在ubuntu下安装mutt很方便,只需要sudo apt-get install mutt

sudo apt-get install mutt

另外需要安装msmtp,一个发邮件的小工具,sudo apt-get insall msmtp。

sudo apt-get insall msmtp

在安装的过程中会出现package configuration,这时候发现无发选到ok

按住Tab点亮ok 然后按住Enter键,接下来一顿默认猛如虎的操作(就乖乖的选默认)

假装有图(安过后就忘了截图噜!)

配置Muttrc

打开文件,路径/etc/Muttrc

set sendmail='/usr/bin/msmtp' set use_from=yes

配置msmtp

msmtp默认没有,所以在/etc路径下创建msmtprc配置文件

我本想用日志文件做测试,创建/var/log/msmtp.log,如果发生错误的话,能检测到原因

打开msmtprc文件配置下面的内容

account default host smtp.163.com 不要动from mailname@163.com 你的邮箱

这个设置权限步骤,只要你胆子大就不用(我是没改,太难了)

由于我们的密码是明文,所以要稍稍的修改下权限(哈哈,你看不到我的pw,你看不到)

chmod 600 msmtprc

现在基本配置完成了,使用命令行输出测试一波

我把以my_first_test为主题,test为内容的邮件发送到另一个我的邮箱

echo 'test' |mutt -s 'my_first_test' 1599121712@qq.com

哈哈,成功

到这里邮箱配置的环境可以了,现在只能只能用命令行发送邮件。如何做到自动发送,且向下see

常见的报错,搜一下一大推解决方案,奔溃边缘就重新配置,从0开始!

mutt的常用命令

mutt [-hnpRvxz][-a][-b][-c][-f][-F][-H][-i][-m][-s][邮件地址]

Linux命令参数:

-a文件>

-b地址>

-c地址>

-f邮件文件>

-F配置文件>

-h 显示帮助。

-H 将指定的邮件草稿送出

-i文件>

-m类型>

-n 不要去读取程序培植文件(/etc/Muttrc)

-p 在mutt中编辑完邮件后,而不想将邮件立即送出,可将该邮件暂缓寄出。

-R 以只读的方式开启邮件文件

-s主题>

-v 显示mutt的版本信息以及当初编译此文件时所给予的参数。

-x 模拟mailx的编辑方式。

-z 与-f参数一并使用时,若邮件文件中没有邮件即不启动mutt。

举个橘子:

mutt -s 'subject' -a /home/admin/backup.tar.gz <>

-s: 邮件标题,用''括上

-a: 邮件附件。如上命令就是将/backup目录下 backup.tar.gz文件作为附件发送。

<>

给多人发送邮件,只要在邮箱地址后加空格接着输入邮箱地址即可,如:

mutt -s 'subject' -a /home/admin/backup.tar.gz <>

网易163邮箱获取授权码

163免费邮箱可以直接要网页上进行收发邮件,,如果在客户端上收发邮件必须使用授权码才能够使用

授权码163邮箱的一个安全机制

登录163邮箱,在设置里面

查看,应该是没开启的状态,我的开启了

点击开启,手机验证,输入的密码就是上面配置中输入的密码

同时开通POP3/SMTP/IMTP邮件收发服务,你的手机邮件都会记录下这个密码的。

在测试的时候出现错误:不要怕,去翻译去百度(我就是这么煎熬的过来的)

3、执行脚本编写

前面的的步骤成在Ubuntu上配置,下面就让发送邮件和定时功能结合起来,编写.sh小脚本

在tmp下创建emil文件夹

测试小实验:

在里面创建a.sh文件,输入

echo 'aaaaaaaaaa' | mutt -s 'this is title' 1599121712@qq.com

邮箱是要发到的邮箱。

bash '/tmp/email/a.sh'

收到邮件

然后在crontab中定时执行这个脚本

crontab -e

添加定时语句,每一分钟执行一次a.sh的脚本

*/1 * * * * bash /tmp/email/a.sh

保存 退出 重启服务器

这是就会每分钟自动发送给你一次邮件

不行我要赶紧关了,这一分钟一次也太烦了!!小实验到此实验成功!

下面写将python爬取数据的1.txt文本中的内容发送到邮件上的.sh脚本

同样的步骤依旧在原email的目录下创建1.sh和1.txt

编写1.sh内容

echo 'this is my computer'|mutt -s 'my_conputer server' 1599121712@qq.com

然后让他定时运行脚本

*/30 * * * * bash /tmp/email/1.sh

30分钟给我发送一次,自己可以任意修改时间

保存,重启服务

完成.sh脚本的编写

python爬虫程序的编写,将爬取的内容加入的/tmp/email/1.txt文档中

附录:随手最简单的爬虫小程序

import urllib.request

from bs4 import BeautifulSoup

url=' http://neihanshequ.com/'

html=urllib.request.urlopen(url).read()

soup=BeautifulSoup(html,'lxml')

ps=soup.find_all('p')

i=[]

for p in ps:

i.append(p.get_text())

with open ('/tmp/email/1.txt','w+') as f:

f.writelines(i)

实现过程 写好程序同样也放在email的目录下

然后crontab加入定时运行python

定时运行py

总过程结束

效果图:

网页显示:将邮件放在指定的邮箱。

网页

手机端显示:设置为每两分钟接受一次邮件。

iphone

做这个小的应用集成,无非是做简单的技术实现,脑洞打开-同样也可以将里面的部分内容去置换。发送的邮件,不是这些无味的粗粮,如一些log日志,跟进工作中的copy事项,去完成其所需要的要求。邮件草稿>主题>类型>文件>邮件草稿>配置文件>邮件文件>地址>地址>文件>

python发邮件怎么用服务器每天发_神级程序员的Python爬虫!服务器定时发邮件(知识点全面)...相关推荐

  1. 知道经纬度用python画路线图_神级程序员教你用Python如何画一个中国地图!(好好玩)...

    为什么是Python 先来聊聊为什么做数据分析一定要用 Python 或 R 语言.编程语言这么多种, Java , PHP 都很成熟,但是为什么在最近热火的数据分析领域,很多人选择用 Python ...

  2. python中国地图程序设计_神级程序员教你用Python如何画一个中国地图!(好好玩)...

    为什么是Python 先来聊聊为什么做数据分析一定要用 Python 或 R 语言.编程语言这么多种, Java , PHP 都很成熟,但是为什么在最近热火的数据分析领域,很多人选择用 Python ...

  3. python交流企鹅裙_神级程序员巧用python开发王者荣耀把妹神器,一路升级上王者!...

    Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理 ...

  4. python项目了解_神级程序员都是这样来开源 Python 项目!今天算是涨知识了!

    工具和概念 项目布局 当准备一个项目时,正确合理的布局(目录结构)是十分重要的.一个合理的布局意味着想参与开发者不必花时间来寻找某些代码的位置; 凭直觉就可以找到文件的位置.因为我们在处理一个项目,就 ...

  5. 怎么用python制作简单的程序-神级程序员教你如何用python制作一个牛逼的外挂!...

    玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过如何做一个外挂呢?(当然用外挂不是那么道义哈,呵呵),那我们就来看一下如何用python来制作一个外挂.... 我打开了4399小游 ...

  6. python连接池框架_Python中的连接池是非常重要的!神级程序员详解!

    概述 连接池的作用就是为了提高性能,将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对Server端进行访问.这样 省略了创建连接和销毁连接的过程(TCP连接建立时的三次握手和销毁 ...

  7. 程序员python代码打招呼方式_某编程少年说他是Python大神,神级程序员不用一行代码教他做人!...

    听君一席话,胜读十年书. 1.扎实的python基础 个人的技术基础知识是否扎实,决定了个人是否能够做的工作层次. 比如某些Python半吊子,只能够纸上谈兵,和Python小白谈谈人生理想,而只要涉 ...

  8. 神级程序员巧用python开发王者荣耀把妹神器,一路升级上王者!

    Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理 ...

  9. 一张图30分钟带你入门python-大数据时代来了!神级程序员一张图帮你梳理Python脉络,快速入门...

    python语言是我目前为止用的最爽的语言,因为它真的很优美.虽然c,c++,java也非常的强大和伟大,但是每一种语言伟大的背后都是有一定的时代背景. 在PC时代大量的嵌入式的设备,底层的代码,以及 ...

最新文章

  1. linux进程篇 (二) 进程的基本控制
  2. 【AI学院】老司机手把手带学言有三的经典书籍《深度学习之图像识别》,需要的赶紧上车吧...
  3. pycharm pull到github
  4. 调试中的一些Python错误
  5. 性能优化实战|使用eBPF代替iptables优化服务网格数据面性能
  6. oracle listagg方法,Oracle实现字符串拼接和分离功能的方法(LISTAGG函数),oraclelistagg...
  7. iPhone入门教程 (视频)
  8. 大型网站限流算法的实现和改造
  9. php ueditor怎么用,ueditor PHP版本使用方法
  10. 语句 查询每个人每个科目的最高分_Mysql中常用的查询实例详解
  11. 生活广场远程预付费电能管理系统的设计与应用
  12. irr java_java-irr: java版的IRR和XIRR,通过牛顿算法实现内部收益率的计算
  13. 基于java的高速公路收费系统 计算机毕业设计
  14. HDFS文件访问权限
  15. graphviz画图之张柏芝前夫是谢霆锋
  16. Python画Sigmoid、Relu、Softmax、Tanh、Leaky relu等函数(1)
  17. dya04 js_02
  18. c# 直线和椭圆弧的交点坐标算法
  19. Unity延迟几秒执行一个方法小工具
  20. java利用循环输出*三角形

热门文章

  1. 4.5---Spring框架之Spring的自动装配(复习版本)
  2. 奔驰的STAR3电子电气架构2
  3. 物体重心的特点是什么_三角形重心有什么特点?
  4. 使用 stable diffusion 将视频动漫化
  5. css深度选择器deep
  6. Opencv 三对角线矩阵(Tridiagonal Matrix)解法之(Thomas Algorithm)
  7. 香港酒店模拟分析项目报告--使用tableau、python、matlab
  8. ghost 网络克隆
  9. ABAP总结-转载,好全啊
  10. 高德地图label换行