利用python推送小说更新

最近找了喜欢上了看小说,就是小说是更新的,更新时间没有规律,怎么能及时get小说的推送呢?

因此想到了用python 抓取小说然后推送到手机上这样的方法

我们首先来看看技术路线技术路线

那么问题就是两个,第一是如何爬取小说,第二是如何推送到手机上
爬取小说的话,显然用爬虫访问小说网站前端就可以了
因此我们来看看如何推送到手机上
我在这里推荐两种方法
##1.server酱
传送门:http://sc.ftqq.com/3.version
image.png
这个流程可以说是很简单
先注册GitHub网站,然后登陆server酱
登陆完成后就会出现如下的界面
image.png
系统会给你分配一个keys

只需要postget 分配给的keys就行了
image.png

##2.QQ邮箱
现在每个人的手机QQ应该是全天在线,因此可以将爬取的小说通过邮箱推送到你的QQ邮箱上,QQ上有QQ邮箱的推送,这样就能及时得到信息
怎么才能跟自己发送呢?
利用QQ邮箱的包容性,将账号注册2个域名
一个是xxx@qq.com 一个是xxx@foxmail.com
image.png
开启smtp服务
image.png
这样就可以进行用xxx@qq.com发送到 xxx@foxmail.com上
image.png
哇哇简直不要太方便
image.png
理论讲了半天,不放代码就是耍流氓
我们来看看网站的源码
image.png
小说的目录都是放置

标签里面,因此需要得到其中的href链接
image.png
小说的内容放在id=’content’里面,访问其中的文字即可
代码附件请食用

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2019-12-12 17:17:22
# @Author  : muxiaoxiong

'''
目标:每天运行一次,访问网站,识别最新章节,比本地的库进行比较
如果相同,则忽视
如果新更新,则通过邮箱的方式推送
'''
user_agent = [
    "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
    "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
    "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0"]
#随机访问头,防止网站封ip,访问网站不能太频繁,不要给别人的服务器造成压力!!!!

import smtplib  # 发送邮件模块
from email.mime.text import MIMEText  # 定义邮件内容
from email.header import Header  # 定义邮件标题
import requests
from bs4 import BeautifulSoup
import random
import os
import re
import sys

smtpserver = 'smtp.qq.com'

# 发送邮箱用户名密码
user = 'xxxxx@qq.com' #发送邮箱的账号
password = 'xxxxxx'  #这里写邮箱的密码 smtp密码

# 发送和接收邮箱
sender = 'xxxxx@qq.com' #发送账号
receive = 'xxxxxx@foxmail.com' #接受账号

def main():
    url = 'http://www.xbiquge.la/ #我随便在网上找到小说为例
    headers = {'User-Agent': random.choice(user_agent)}
    r = requests.get(url, headers=headers)
    r.encoding = r.apparent_encoding
    soup = BeautifulSoup(r.text, 'lxml')
    all_name = soup.find('div', id='list').find_all('dd') #具体见前面
    paper_num = len(all_name)  # 更新数目
    ff = open('ly.txt')
    old_num = int(ff.readlines()[0])
    ff.close()
    if paper_num == old_num:
        pass
    elif paper_num < old_num:
        os.remove('ly.txt')
        out = open('ly.txt', "a+")
        out.write(str(paper_num))
        out.close()
    elif paper_num > old_num:
        # 访问小说发送到邮箱
        ohter = paper_num - old_num  # 更新的章节数目
        new_name = all_name[-ohter:]
        for i in new_name:
            info = i.find('a')
            new_href = 'http://www.xbiquge.la' + info.get('href')  # 新的链接
            title = i.get_text()  # 新的题目
            send_email(title, new_href)
        os.remove('ly.txt')
        out = open('ly.txt', "a+")
        out.write(str(paper_num))
        out.close()


def send_email(title, new_href):
    headers = {'User-Agent': random.choice(user_agent)}
    r = requests.get(new_href, headers=headers)
    r.encoding = r.apparent_encoding
    soup = BeautifulSoup(r.text, 'lxml')
    content = soup.find('div', id='content').get_text(
    ).replace("\xa0\xa0\xa0\xa0", '<br /><br />')  # 小说的内容 <br /> 表示换行
    # 通过QQ邮箱发送
    subject = title
    msg = MIMEText(content, 'html', 'utf-8')
    msg['Subject'] = Header(subject, 'utf-8')
    msg['From'] = sender
    msg['To'] = receive
    # SSL协议端口号要使用465
    smtp = smtplib.SMTP_SSL(smtpserver, 465)  # 这里是服务器端口!
    # HELO 向服务器标识用户身份
    smtp.helo(smtpserver)
    # 服务器返回结果确认
    smtp.ehlo(smtpserver)
    # 登录邮箱服务器用户名和密码
    smtp.login(user, password)
    smtp.sendmail(sender, receive, msg.as_string())
    smtp.quit()


if __name__ == '__main__':
    main()

最后一个,怎么做定时运行呢?
如果你有linux系统的话
可以使用crontab做内置的定时程序

本文就爬虫和调用python 发送QQ邮箱进行了联合学习
更多的是娱乐学习为主

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值