Scrapy+crontab 定时爬取小说更新推送到手机邮件

本人酷爱追火星引力的《逆天邪神》小说,但经常是俩三天才一更,每天打开浏览器查看是否更新贼痛苦。现在利用所学的知识来解决问题。文章分三部分:一、爬取更新 二、发送邮件 三、定时任务。爬虫内容简单,适合scrapy新手,重点在于发送邮件和定时任务。

一、爬取更新

小说地址:http://m.zongheng.com/h5/book?bookid=408586
页面图片:
1.创建工程project
选择一个目录:/home/yunge/code/spiders/
执行命令:

scrapy startproject xiaoshuo

2.创建spider
进入工程内,执行命令:

cd /xiaoshuo/xiaoshuo

创建spider,执行命令:

scrapy genspider nitianspider zongheng.com

3.items.py 填空

import scrapy

class XiaoshuoItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()chapter=scrapy.Field()updatetime=scrapy.Field()

4.nitiansipder.py

# -*- coding: utf-8 -*-
import scrapy
from xiaoshuo.items import XiaoshuoItem
from scrapy.mail import MailSenderclass NitianspiderSpider(scrapy.Spider):name = 'nitianspider'allowed_domains = ['zongheng.com']start_urls = ['http://m.zongheng.com/h5/book?bookid=408586']def parse(self, response):item=XiaoshuoItem()item['chapter']=response.xpath('//span[@class="last_tit"]/text()').extract()[0]item['updatetime']=response.xpath('//div[@class="time"]/text()').extract()[0]return item

二、发送邮件

5.pipelines.py

from scrapy.mail import MailSender
import scrapyclass XiaoshuoPipeline(object):def process_item(self, item, spider):with open ('nitianxieshen.txt','r') as fp:line=fp.readline().split('\t')if item['chapter']!=line[0]:Subject=u'小说《逆天邪神》更新啦!!!'Body=u'更新内容:\n%s\n点击地址:\nhttp://m.zongheng.com/h5/book?bookid=408586'%item['chapter'mailer=MailSender(smtphost="smtp.163.com",mailfrom="*****@163.com",smtpuser="******@163.com",smtppass="******",smtpport=25)mailer.send(to=['*******@qq.com'],subject=Subject.encode('utf8'),body=Body.encode('utf8'))with open('nitianxieshen.txt','w') as fp:fp.write(item['chapter'].encode('utf8')+'\t')fp.write(item['updatetime'].encode('utf8')+'\t\n')return item

6.settings.py
在最后一行添加:

ITEM_PIPELINES={'xiaoshuo.pipelines.XiaoshuoPipeline':2}

7.执行验证
首先创建文件 nitianxieshen.txt :

vim nitianxieshen.txt

随便写入内容,与爬取的内容不同,方便测试爬虫是否发送邮件成功。
执行命令:

scrapy crawl nitianspider

三、定时任务

8.在目录:/home/yunge/code/spider/xiaoshuo/xiaoshuo/ 下,
创建脚本crontab.sh,内容:

cd /home/yunge/code/spiders/xiaoshuo/xiaoshuo/
scrapy crawl nitianspider

9.脚本添加文件执行权限
执行命令:

chmod 774 crontab.sh

10.crontab 添加定时任务
执行命令:

crontab -e

写入:

30 */6 * * * /home/yunge/code/spiders/xiaoshuo/xiaoshuo/crontab.sh

从6:30开始,每隔6个小时执行一次crontab.sh。

11.取消脚本执行后发送电脑邮件
此邮件非爬虫里的邮件,是cron定时任务发送电脑用户(即yunge)的邮件,执行后会在命令端不断提醒。
重新修改:

crontab -e

内容:

30 */6 * * * /home/yunge/code/spiders/xiaoshuo/xiaoshuo/crontab.sh &> /dev/null

到此已经结束了,以后可以美滋滋地看小说了。。。

Scrapy+crontab 定时爬取小说更新推送到手机邮件相关推荐

  1. Ubuntu利用crontab+shell脚本实现Scrapy每日定时爬取网站

    Ubuntu利用crontab+shell脚本实现Scrapy每日定时爬取网站 原创文章.码字不易,转载请注明出处和链接,谢谢! 1.环境保障 自己利用scrapy编写的智联招聘网站"大数据 ...

  2. 土拨鼠网站日记管理(分析推送二合一)】宝塔插件之自动爬取全站URL推送说明书

    自动爬取全站URL推送说明书: 此功能将会针对爬取的站点进行全站URL爬取并且进行推送,爬取的每一条URL都会只推送一次,不会重复推送. 1.设置爬取的URL尽量是本服务器的站点,如果要推送别的站点可 ...

  3. 用python爬取公众号推送图片并保存为PPT

    文章目录 一.前言 二.开始 (一)获取推送URL链接 (二)爬取网页并提取图片保存 1.定义用于爬取推送图片的PictureSpider类 2.定义get_url_text()方法 3.定义sear ...

  4. 记录使用scrapy爬取新闻网站最新新闻存入MySQL数据库,每天定时爬取自动更新

    爬取每天更新的新闻,使用scrapy框架,Python2.7,存入MySQL数据库,将每次的爬虫日志和爬取过程中的bug信息存为log文件下.定义bat批处理文件,添加到计划任务程序中,自动爬取. 额 ...

  5. 用python自动爬取海贼王漫画推送kindle

    作者丨白人 来源丨GitPython(GitPythoner) 链接: https://www.zhihu.com/question/34098079/answer/790127807 来源:知乎(作 ...

  6. 定时爬取学校官网讲座公告并邮件发给自己

    文章目录 前言 流程 各部分说明 获取网页-Request库 从HTML中提取数据-BeautifulSoup库 BeautifulSoup-转换成`BeautifulSoup` 的对象 find() ...

  7. 爬虫学习,尝试爬取小说网站

    初步学习了scrapy 尝试着爬取小说网站全部小说(发现没问题就停了) 以下为scrapy中基础爬虫的写法 # -*- coding: utf-8 -*- import scrapy from scr ...

  8. Python使用Scrapy爬虫框架爬取天涯社区小说“大宗师”全文

    大宗师是著名网络小说作家蛇从革的系列作品"宜昌鬼事"之一,在天涯论坛具有超级高的访问量.这个长篇小说于2015年3月17日开篇,并于2016年12月29日大结局,期间每天有7万多读 ...

  9. Scrapy爬虫框架,爬取小说网的所有小说

    Scrapy入门教程请看 目录 1.思路清理 2.创建爬虫项目 3. 爬虫架构构思 4.爬虫程序具体分析 5.效果展示 6.待优化的地方 1.思路清理 我们的目的是把某个小说网的所有小说给拿下,这就涉 ...

最新文章

  1. WinDbg用法详解
  2. 信息化基础建设系列文章汇总 .NET 平台业务项目实践
  3. PHP利用jpgraph类画折线图
  4. Use Asynchronous Apex
  5. Leetcode 930:和相同的二元子数组
  6. pytorch测试模型时根据不同列别的概率值得到具体的分类
  7. 的采样方式_DR803M4水质自动采样器(岸边站自动排空型)
  8. mysql 判断当前星期_MySQL数据库如何获取一个日期所对应的星期数呢?
  9. java使用kaptcha生成图片验证码
  10. 短视频源码:新兴行业的一匹黑马
  11. flask从表单中的提交中获取数据(不使用第三方库)
  12. 微信能上但浏览器无法上网
  13. 新浪云应用 mysql_云应用开发之新浪SAE读写云端数据库MySQL
  14. 一文了解开集输出结构open_drain
  15. Art of Problem Solving: Proof without Words
  16. 打开我的计算机我的文档不见,我电脑桌面上的我的文档不见了,是什么原因造成我的文档不见了呢?是? 爱问知识人...
  17. 【世界杯赛程表】v1.3 100614 我做的M8软件!
  18. mysql5.7 1698 28000,MYSQL教程MySql Error 1698(28000)问题的解决方法
  19. 优酷android 离线 导出来,手机优酷缓存的视频如何导出 缓存视频导出到电脑方法...
  20. 计算机语言学国外排名,美国语言学专业排名

热门文章

  1. ThreadPoolExecutor的shutDown和shutDownNow的区别
  2. WSL2使用xrdp实现Liunx图形化桌面
  3. 人人都在说的数据中台是什么?附9张架构图优质模板!
  4. 【windows更新】解决更新22h2卡在 “正在进行更新 24% 请不要关机” 问题
  5. 计算机英语是啥意思啊,玩电脑英语是什么意思
  6. 总体分布、样本分布、抽样分布的区别
  7. 配置ALB基于路径的路由功能
  8. Microsoft Office 2003 简体中文正式企业版
  9. 电大计算机后面的光盘有用吗,曾经风靡一时的光盘,为何现在很少有人用了?看完可算明白了...
  10. 安卓蓝牙BLE设备开发