目录
前言
二、设计思路
三、使用步骤
1.引入库
2.User-Agent代理池:
3.核心代码片段
总结
前言
啊啊啊啊啊啊啊,小说好好看,但又非常费眼睛,想听,网上搜搜搜一大堆播放器,随机选一个,艾玛,白嫖党伸手被啪啪啪打的手掌通红。试读前几章吧,大量广告算了!!!还要交出为数不多的软妹币开月vip,好蛋疼。那有什么其他方法吗,绞尽脑汁想了个方法,用爬虫搭载pyttsx3播放器,一边爬一边播(当然,这里的话先普及一下,使用pyttsx3注册播放工程时,相当于给当前线程挂了个sleep(),只有读完,才会爬取下一条,非常人性化。)
一、准备工具
Jupyter、pyttsx3
不出意外,现在点击进来的小伙伴们都有python基础,白嫖党当我没说,应该都有自己的开发平台,本文Code只要有安装pyttsx3拓展包,即可开始使用。
安装方法:pip install pyttsx3
有问题的话可下放留言或私信,也可自行百度sougo一下,相信解决难度不大。
敲黑板!!!重点来了,设计最需要的是思路,了解这个思路,你也可以做到举一反三,做其他有意思的事。
当初学习爬虫,爬小说,然后疯狂阅读,艾玛,眼睛不行了,去听小说吧,可惜资源没有,vip、广告一大堆,哇,我们有pyttsx3这个播放器耶(^-^)V,但是内容怎么来呢,ε=(*ο*`)))欸!我可以使用爬虫,爬取到源码后使用xpath或者re正则表达式提取小说信息,然后把内容加载给pyttsx3播放器,不就完美解决了吗?话不多说,赶紧行动!!!
代码如下:
import re #这里使用re正则提取小说信息
import random #用做User-Agent池的随机获取
import requests
import threading #挂线程使用,不过目前没用到,后续更新补充
import pyttsx3 #今天的MVP主角
爬虫必备,以防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)"
爬虫嘛,我相信小伙伴都有能力独自爬取一个界面,有能力一点的,使用表达式,提取相关信息,应该问题不大,以下代码仅做参考,另外,我想说,笔趣阁不愧是一个最棒最人性化的小说网站,白嫖党的福利!!!!咳咳。。寒暄结束,上代码:
enginer=pyttsx3.init() #注意这里很重要,首先要初始化一个播放器工程实例
#爬取并解析网站都会吧
resp=requests.get(url)
res=requests.get(url,headers=headers)
urls=re.findall('第',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("(.*?)\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:新人博主,疯狂点赞暗示!!!)