小说网站转码储存源码分享(小说转码的浏览器)

大家好,今天来为大家分享小说网站转码储存源码分享的一些知识点,和小说转码的浏览器的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

前言

度娘啊,你以为你把百度网盘取消限速了,我们就满意了?当然不满意,还有某度文库呢!本来好好的文档,非得不让我们下载……今天,就教大家跟我一起写某度文库下载器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写错了,如果你下载了源码,请先照文中代码核对一下。

小说网站转码储存源码分享的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于小说转码的浏览器、小说网站转码储存源码分享的信息别忘了在本站进行查找哦。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平