基于pyttsx3、requests的小说自动播放器

目录

        啊啊啊啊啊啊啊,小说好好看,但又非常费眼睛,想听,网上搜搜搜一大堆播放器,随机选一个,艾玛,白嫖党伸手被啪啪啪打的手掌通红。试读前几章吧,大量广告算了!!!还要交出为数不多的软妹币开月vip,好蛋疼。那有什么其他方法吗,绞尽脑汁想了个方法,用爬虫搭载pyttsx3播放器,一边爬一边播(当然,这里的话先普及一下,使用pyttsx3注册播放工程时,相当于给当前线程挂了个sleep(),只有读完,才会爬取下一条,非常人性化。)


一、准备工具

        Jupyter、pyttsx3

        不出意外,现在点击进来的小伙伴们都有python基础,白嫖党当我没说,应该都有自己的开发平台,本文Code只要有安装pyttsx3拓展包,即可开始使用。

        安装方法:pip install pyttsx3

        有问题的话可下放留言或私信,也可自行百度sougo一下,相信解决难度不大。

二、设计思路

        敲黑板!!!重点来了,设计最需要的是思路,了解这个思路,你也可以做到举一反三,做其他有意思的事。
        当初学习爬虫,爬小说,然后疯狂阅读,艾玛,眼睛不行了,去听小说吧,可惜资源没有,vip、广告一大堆,哇,我们有pyttsx3这个播放器耶(^-^)V,但是内容怎么来呢,ε=(*ο*`)))欸!我可以使用爬虫,爬取到源码后使用xpath或者re正则表达式提取小说信息,然后把内容加载给pyttsx3播放器,不就完美解决了吗?话不多说,赶紧行动!!!

三、使用步骤

1.引入库

代码如下:

import re    #这里使用re正则提取小说信息
import random  #用做User-Agent池的随机获取
import requests
import threading   #挂线程使用,不过目前没用到,后续更新补充
import pyttsx3    #今天的MVP主角

2.User-Agent代理池:

        爬虫必备,以防ip被封,不过目前播放器作用不大,本来就类似一个人在那里老老实实从头看到尾,不过以防万一,还是加上吧,亦可做其他的用途。

"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/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)",
        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)",
        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
        "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
        "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11",
        "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)",
        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)",
        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)",
        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; The World)",
        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)",
        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)",
        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser)",
        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"

3.核心代码片段

        爬虫嘛,我相信小伙伴都有能力独自爬取一个界面,有能力一点的,使用表达式,提取相关信息,应该问题不大,以下代码仅做参考,另外,我想说,笔趣阁不愧是一个最棒最人性化的小说网站,白嫖党的福利!!!!咳咳。。寒暄结束,上代码:

enginer=pyttsx3.init()                    #注意这里很重要,首先要初始化一个播放器工程实例
#爬取并解析网站都会吧
resp=requests.get(url)
res=requests.get(url,headers=headers)
urls=re.findall('<dd><a href="(.*?)">第',res.text)
titles=re.findall('html">第(.*?)<',res.text)
for i in range(len(urls)):
    urls[i]="http://www.cits0871.com"+urls[i]   #url拼接现场
for i in range(2513,len(urls)):
    url=urls[i]
    headers={
        "User-Agent" : random.choice(User_Agents),   #生成随机代理
        "Referrer Policy": "unsafe-url"
    }
    print("正在爬取第"+str(i+1)+"页")
    resp1=requests.get(url,headers=headers)    #开始爬取每一章的内容
    context=re.findall("<p>(.*?)\r",resp1.text)     #提取小说文章内容
    for b in range(len(context)):
        enginer.setProperty('rate',200)         #设置播放器速度
        enginer.say(context[b])                 #开始播放
        #注意!!!!enginer.say(context[b])   和   enginer.runAndWait()  是配套的,多对一的关系,
        #没有enginer.runAndWait(),就算电脑冒烟了都没法发声音
        enginer.runAndWait()
print("小说播放结束!")

        当然,如果需要保存小说的,可自行修改Code或者私信作者,我私信给你。


总结

        可能本人技术有限,并没有做到最好,如有更好的解决方案,欢迎下方留言讨论。

        最后,咳咳。。(ps:新人博主,疯狂点赞暗示!!!)咳咳咳。。。(ps:新人博主,疯狂点赞暗示!!!)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值