大家好,今天来为大家分享小说网站转码储存源码分享的一些知识点,和小说转码的浏览器的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
前言
度娘啊,你以为你把百度网盘取消限速了,我们就满意了?当然不满意,还有某度文库呢!本来好好的文档,非得不让我们下载……今天,就教大家跟我一起写某度文库下载器Weeker,拒绝某库,从我做起。
私信小编01即可获取大量Python学习资源
我们的下载器是一个GUI程序,具体架构是,先写核心文件(get.py),再写命令行解析文件(weeker.py),接着使用Fire生成命令行,最后用Gooey把CLI转换为GUI。
准备
安装
安装Python3.8;安装依赖(依赖的作用下文会详解):pipinstallrequestsdocxbeautifulsoup4Gooey
目录
初始化项目(下面的脚本是在Unix或Linux上运行的):
复制代码隐藏代码\ncd/path/to/project\nmkdirWeeker\ntouchget.pyweeker.py
爬虫核心
第一步,打开get.py,先引入类库:
复制代码隐藏代码\nfromosimportgetcwd,system\nfromreimportsub\n\nimportrequests\nimportdocx\nfrombs4importBeautifulSoup
每个模块的作用如下:
模块名称
作用
os
获取当前目录
re
替换文档中的特定字符
requests
用来做网络请求,不用多说。
docx
用来将txt转换为docx格式。
bs4
用来把文本从html中解析出来。
由于保存文件时我们需要判断路径,定义一个pwd常量,用来存储“当前路径:
复制代码隐藏代码\npwd=getcwd()
再声明一个geturl:ua:path:output:convert方法,来实现我们的爬虫函数,其中:
参数名称
作用
url
文档地址,比如随便搜了一个:https://wenku.baidu.com/view/11ebd2af42323968011ca300a6c30c225901f0ea.html?fr=search
ua
UserAgent。我试了一下,如果使用浏览器UA是不行的,会爬到一个广告界面,然后告诉你此操作需要登录,因此我们要使用Googlebot或Baiduspider来绕过UA检测(这就是为什么搜索引擎能搜到),以为我们是一个搜索引擎。跟推荐使用后者,毕竟百度和文库一家人嘛。
path
存储目录,不包括文件名。
output
带有后缀名的文件名。
convert
转换后的格式。因为作者比较懒,所以此字段只能填写docx。
编写get:::::函数
获取html&解析
把光标移到get:::::函数。首先照例我们要用requests,并且祭上bs4一条龙解析:
复制代码隐藏代码\nheaders={&39;:ua}\nresult=requests.get(url,headers=headers)\nsoup=BeautifulSoup(res.text,&34;)\n\n39;_百度文库&39;&39;div&34;class&34;bddoc-reader&39;\\n&扩展数组\neveryline=[i.replace(&39;,&39;)foriineveryline]\neveryline=[i.replace(&39;,&39;)foriineveryline]
保存文件
接下来就是保存文件。我的思路是,先按照txt格式保存,然后再判断convert参数,如果填写了docx,再将txt加后缀并修改为docx。
复制代码隐藏代码\nfinal_path=path\n39;/&39;/&39;/&39;w&39;utf-8&39;\\n&34;wenku:error:Outputdirectorydoesnotexist.Quitting.&如果有convert请求\nifconvert==&39;:\nwithopen(final_path+&39;+output)asf:\ndocu=docx.Document()添加段落\ndocu.save(final_path+&39;+output+&39;+convert)39;rm&39;/&删除try中保存的文件
创建GUI
打开weeker.py。首先是两句import,其中Gooey可以用类似argparse的语法将CLI转换为GUI。
复制代码隐藏代码\nfromgooeyimportGooey,GooeyParser\nimportget
接着添加if__name__==&39;:
复制代码隐藏代码\nif__name__==&39;:\nmain()
我们来定义一下这个main():
复制代码隐藏代码\n@Gooey(encoding=&39;,program_name=&34;,language=&39;)\ndefmain():\nparser=GooeyParser(description=&34;)\nparser.add_argument(&34;,metavar=&39;,widget=&34;)\nparser.add_argument(&34;,metavar=&39;,widget=&34;,choices={&34;:1,&39;:2})\nparser.add_argument(&34;,metavar=&39;,widget=&34;)\nparser.add_argument(&34;,metavar=&39;,widget=&34;)\nparser.add_argument(&34;,metavar=&39;,widget=&34;,choices={&39;:1})\nargs=parser.parse_args()\n\nget.get(args.url,ua=args.ua,path=args.path,output=args.output,convert=args.convert)
@Gooey是一个修饰器,可以把main()转换为一个Gooey函数。在main中,我们写下类似argparse的parser.add_argument函数,最终定义args=parser.parse_args(),从args的成员获取每个参数的输入,传到get.py里。我们运行一下,神奇的一幕发生了:
我们成功地把CLI转换成了GUI!!!
注I:如果你喜欢命令行,可以GitHub搜python-fire,直接将函数和参数暴漏给CLI,效果更佳。注II:因为电脑原因,打包不了成品,因此有需要者请自行编译。注III:附件里有两个py文件。注IV:我刚看见源码里面有一句import写错了,如果你下载了源码,请先照文中代码核对一下。
小说网站转码储存源码分享的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于小说转码的浏览器、小说网站转码储存源码分享的信息别忘了在本站进行查找哦。
