pythonepub精品_如何利⽤Python打包HTML页⾯为epub?第⼀步,利⽤requests库访问第⼀个⽬录url,⽤re或者lxml中的etree,获取⽬录中对应章节的url和标题。urls,names两个列表。⽰例代码如下:
import requests
from lxml import etree
import os
import re
from fake_useragent import UserAgent
headers = {'User-Agent': UserAgent().random}
r = (url=url, headers=headers)
html = etree.)
lis = html.xpath('.//a[@target="_blank"]')[1:]
undermine authority
urls = [i.xpath('@href')[0] for i in lis]
names = [i.text for i in lis]
第⼆步,for循环urls列表,利⽤requests库访问对应章节的url来,并⽤re对其进⾏处理,来获取我们需要放进epub的数据内容。(这⾥解释下为什么要⽤re不⽤etree,etree⼀般是⽤来获取格式化的标签的属性值,⽽re则是从html源代码上直接获取⽚段内容,在这⾥我们需要的就是⽹页源代码。)我们需要的是⽂本内容问html和⽰例图⽚img这两种数据,⾄于多余⽹页导航,侧边栏,评论,⼴告之类的通通不要。在这⾥发现获取到的图⽚标签的src都是⽹络url,⽽epub中只能从本地路径中导⼊,因此获取img标签的src属性值,将图⽚下载到本地⽂件夹中按数字编号保存⽂件名(1.png,2.png,),并⽤re.sub将⽂本html中的img的src属性替换成本地路径,将html写⼊本地⽂件前
我们需要将其包裹在
标签中,并增加标签构成⼀个完整的⽹页,有需要还可以增加title标签。到这⾥,我们需要的数据就准备好了。⽰例代码如下:
nums = len(names)
num = 0
os.chdir('D:\藏书馆\⼩说')
img_num = 1
while num < nums:
r = (url=urls[num], headers=headers)
html = r.text
html = re.findall('(
',html,flags=re.S)[0]
imgs = re.findall('< img src="(.+?)" alt="">',html)
print(len(imgs))
for i in imgs:
try:
html个人网页完整代码图片r = (url=i, headers=headers)
with open(f'{img_num}.png', 'wb')as f:
f.t)
html = re.sub('< img src="(.+?)" alt="">',f'< img src="../Images/{img_num}.png">',html,1)
img_num += 1
except:
print(i)
name = names[num]
for tsstr in ':!~?:".。,、?;:!·~()[]{}()【】{}':
name = place(tsstr, '')
name=f'{num:<3}'+ ' ' + name
with open(f'{name}.html','w', encoding='utf-8')as f:
f.write(html)
num+=1
print(f'{name}下载完毕,当前下载进度:{num}/{nums}')
第三步,创建⼀个⽂件夹,把它压缩后就是我们的.epub⽂件了,当然不是现在就压缩啦!⽂件夹⽬录如下:
⼀级⽬录中有两个⽂件夹和⼀个⽂件,META-INF⽂件夹,OEBPS⽂件夹和mimetype⽂件。mimetype⽂件⾥⾯只写⼀brpc java
⾏:application/epub+zip,NETA-INF⽂件夹中只有⼀个l⽂件,内容是:
<?xml version="1.0" encoding="utf-8"?>
OEBPS⽂件夹中有Images⽂件夹,Text⽂件夹,和content.opf⽂件与⽂件。
Images⽂件夹中存放所有的img图⽚,Text⽂件夹中存放所有的html⽂件,content.opf⽂件是Images与Text中所有⽂件的⼀个清单,格
小程序的功能及特点式如下:简约文本框素材
<?xml version="1.0" encoding="utf-8"?>
urn:uuid:758b33c6-6ddb-4d52-a91c-50b137b50ef3
en
[此处填写标题]
2020-11-04
......
......
<⽂件是⽬录⽂件,格式如下:
<?xml version="1.0" encoding="UTF-8"?>
/p>
[此处填写标题]
⼀,Python介绍
1. python的出⽣与应⽤
2. python是什么编程语⾔。
3. python的优缺点。
4. python的种类。
⼆. python环境
......
这两个⽂件都可以利⽤os库⼀键⽣成,⾄此所有⽂件数据准备完毕。
第四步,利⽤zipfile库,和os库压缩⽂件合成.epub⽂件。⼀定要把mimetype⽂件第⼀个写⼊,再将其他固定⽂件(r'META-
l',r'OEBPS\content.opf',r'')写⼊,最后将.html和.png⽂件逐个写⼊,⽰例代码如下:
import zipfile
import os
os.chdir(r'C:\Users\My\Desktop\新建⽂件夹')
epub = zipfile.ZipFile(r'C:\Users\My\Desktop\新建⽂件夹.epub','w')
epub.write('mimetype',compress_type=zipfile.ZIP_STORED)
print(os.listdir('.'))
for i in [r'l',r'OEBPS\content.opf',r'']:
epub.write(i, compress_type=zipfile.ZIP_DEFLATED)
for p in [r'.\OEBPS\Images', r'.\OEBPS\Text']:
for f in os.listdir(p):options软件
print(os.path.join(p,f))
epub.write(os.path.join(p,f),compress_type=zipfile.ZIP_DEFLATED)
epub.close
⾄此,我们的epub格式电⼦书就制作完成了,以上内容只是我个⼈的想法和做法,欢迎⼤家⼀起加⼊讨论,另附:今天,你变得更博学了吗?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。