Python多线程如何下载有声小说
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章跟大家分析一下"Python多线程如何下载有声小说"。内容详细易懂,对"Python多线程如何下载有声小说"感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面
千家信息网最后更新 2026年11月01日Python多线程如何下载有声小说
这篇文章跟大家分析一下"Python多线程如何下载有声小说"。内容详细易懂,对"Python多线程如何下载有声小说"感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习"Python多线程如何下载有声小说"的知识吧。
我特地买了大屏幕的Note II 以便看pdf,另外耳朵也不能闲着,不过咱不是听英语而是听小说,我在读书的时候就喜欢听广播,特别是说书、相声等,所以我需要大量的有声小说,现在网上这些资源多的很,但是下载页记为麻烦,为了挣取更多的流量和广告点击,这些网站的下载链接都需要打开至少两个以上的网页才能找到真正的链接,甚是麻烦,为了节省整体下载时间,我写了这个小程序,方便自己和大家下载有声小说(当然,还有任何其他类型的资源)
先说明一下,我不是为了爬很多资料和数据,仅仅是为了娱乐和学习,所以这里不会漫无目的的取爬取一个网站的所有链接,而是给定一个小说,比方说我要下载小说《童年》,我会在我听评书网上找到该小说的主页然后用程序下载所有mp3音频,具体做法见下面代码,所有代码都在模块crawler5tps中:
1. 先设定一下start url 和保存文件的目录
#-*-coding:GBK-*- import urllib,urllib2 import re,threading,os baseurl = 'http://www.5tps.com' #base url down2path = 'E:/enovel/' #saving path save2path = '' #saving file name (full path)
2. 从start url 解析下载页面的url
def parseUrl(starturl): ''''' parse out download page from start url. eg. we can get 'http://www.5tps.com/down/8297_52_1_1.html' from 'http://www.5tps.com/html/8297.html' ''' global save2path rDownloadUrl = re.compile(".*?.{4}\s{1}(.*)\s{1}.*") #有声小说 闷骚1 播音:刘涛 全集 f = urllib2.urlopen(starturl) totalLine = f.readlines() ''''' create the name of saving file ''' title = totalLine[3].split(" ")[1] if os.path.exists(down2path+title) is not True: os.mkdir(down2path+title) save2path = down2path+title+"/" downUrlLine = [ line for line in totalLine if rDownloadUrl.match(line)] downLoadUrl = []; for dl in downUrlLine: while True: m = rDownloadUrl.match(dl) if not m: break downUrl = m.group(1) downLoadUrl.append(downUrl.strip()) dl = dl.replace(downUrl,'') return downLoadUrl3. 从下载页面解析出真正的下载链接
def getDownlaodLink(starturl): ''''' find out the real download link from download page. eg. we can get the download link 'http://180j-d.ysts8.com:8000/人物纪实/童年/001.mp3?\ 1251746750178x1356330062x1251747362932-3492f04cf54428055a110a176297d95a' from \ 'http://www.5tps.com/down/8297_52_1_1.html' ''' downUrl = [] gbk_ClickWord = '点此下载' downloadUrl = parseUrl(starturl) rDownUrl = re.compile(''+gbk_ClickWord+'.*') #find the real download link for url in downloadUrl: realurl = baseurl+url print realurl for line in urllib2.urlopen(realurl).readlines(): m = rDownUrl.match(line) if m: downUrl.append(m.group(1)) return downUrl4. 定义下载函数
def download(url,filename): ''''' download mp3 file ''' print url urllib.urlretrieve(url, filename)
5. 创建用于下载文件的线程类
class DownloadThread(threading.Thread): ''''' dowanload thread class ''' def __init__(self,func,savePath): threading.Thread.__init__(self) self.function = func self.savePath = savePath def run(self): download(self.function,self.savePath)
6. 开始下载
if __name__ == '__main__': starturl = 'http://www.5tps.com/html/8297.html' downUrl = getDownlaodLink(starturl) aliveThreadDict = {} # alive thread downloadingUrlDict = {} # downloading link i = 0; while i < len(downUrl): ''''' Note:我听评说网 只允许同时有三个线程下载同一部小说,但是有时受网络等影响,\ 为确保下载的是真实的mp3,这里将线程数设为2 ''' while len(downloadingUrlDict)< 2 : downloadingUrlDict[i]=i i += 1 for urlIndex in downloadingUrlDict.values(): #argsTuple = (downUrl[urlIndex],save2path+str(urlIndex+1)+'.mp3') if urlIndex not in aliveThreadDict.values(): t = DownloadThread(downUrl[urlIndex],save2path+str(urlIndex+1)+'.mp3') t.start() aliveThreadDict[t]=urlIndex for (th,urlIndex) in aliveThreadDict.items(): if th.isAlive() is not True: del aliveThreadDict[th] # delete the thread slot del downloadingUrlDict[urlIndex] # delete the url from url list needed to download print 'Completed Download Work'这样就可以了,让他尽情的下吧,咱还得码其他的项目去,哎 >>>
关于Python多线程如何下载有声小说就分享到这里啦,希望上述内容能够让大家有所提升。如果想要学习更多知识,请大家多多留意小编的更新。谢谢大家关注一下网站!
小说
线程
链接
网站
学习
代码
内容
文件
更多
知识
程序
而是
资源
跟着
页面
麻烦
三个
两个
人物
做法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州紫鲸互联网科技有限公司
北京互联网科技公司
互联网医疗科技
苏州互联网科技贷款公司
腾讯科技 互联网女皇
电子科技大学互联网
赫美联合互联网科技
互联网养老 桔豆科技
深圳卡尔迅互联网科技有限公司怎么样
顺网科技2021年互联网排名
深圳前海聚择互联网科技有限公司
字节跳动和互联网科技
浙江互联网科技研学营
宜昌元轩互联网科技有限公司
互联网公司黑科技创始人
互联网金融科技名词解释
山东星卡互联网科技有限公司官网
伍佰万互联网科技怎么赚钱
同城互联网络科技
恒生科技指数 中概互联网
湖北九亚互联网络科技有限公司
互联网科技产业
互联网科技资迅
互联网与未来科技
广州善班互联网科技
互联网金融和金融科技
中化能源互联网科技招聘
信承诺互联网科技有限公司
互联网科技机房
瑞安市蟠桃会互联网科技有限公司