求教:python爬取云展网图片并还原成pdf文件的改进
在某论坛看到有python爬取云展网图片并还原成pdf文件的程序。还提供了源代码。目前只能下载:https://book.yunzhan365.com/xxxx/xxxx/mobile/index.html
或者:http://www.yunzhan365.com/xxxxxxxxx.html 这样的网址,其他的网址会不行!
这个网站有些电子书还是有点意思的(非推荐,我下载的是中学辅导材料)
——————————————— 华丽分割线 —————————————————————————
我的系统是WIN7(64位)。这个程序下载后,运行,发现少了api-ms-win-core-path-l1-1-0.dll,千辛万苦的度娘,找到解决方案。也下载了几个文件。
发现,每次下载完后,要按任意键退出,下一次要重新启动系统。
——————————————— 再次分割 —————————————————————————
请高手改进一下,就是下载完后,回到初始状态,等候下一次下载(就是复制粘贴一下要下载的网页)
本人对编程完全是门外汉,所以不要笑话。
谢谢。
import os
import requests
from lxml import etree
import img2pdf
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'}
url = input('请输入云展网图集网址:')
splurl = url.split('/') #分割网址,准备下面判断
if 'index.html' not in splurl: #判断是那一种链接
res = requests.get(url , headers=headers)#获取源码
res.encoding = res.apparent_encoding
xml = etree.HTML(res.text).xpath('//div[@class="show-book-title"]/a/@href').split('/')#取得book.yunzhan365.con网址进行分割
purl = xml + '/' + xml + '/' + xml + '/files/' + 'mobile/' #构造图片下载网址前缀
pathname = etree.HTML(res.text).xpath('//div[@class="show-book-title"]/a/text()') #获取名称
else:
res = requests.get(url , headers=headers)#获取源码
res.encoding = res.apparent_encoding
pathname = etree.HTML(res.text).xpath('/html/head/title/text()') #获取名称
purl = splurl + '/' + splurl + '/' + splurl + '/files/' + 'mobile/' #构造图片前缀
path = 'D:/yunzhanwang/' #存储路径
if not os.path.exists(path):
os.makedirs(path) #如果路径不存在就创建
m = 0 #定义图片名称变量
imgs = [] #准备空列表放置图片内容
with open(path + '/' + str(pathname) + '.pdf' , 'wb') as f: #创建并打开一个pdf文件,准备写入
while True: #死循环获取并写入图片
m += 1 #名称变量
surl1 = 'http://' + purl + str(m) +'.jpg' #构造图片链接
picurl = requests.get(surl1) #获取图片内容
if picurl.status_code == 200: #判断下 如果图片存在就写入列表
imgs.append(picurl.content)
else:
f.write(img2pdf.convert(imgs)) #把列表中所有的图片内容 写入pdf
print(f'采集完毕!一共采集了{m -1}张,生成的pdf是{path}目录下【{pathname}.pdf】')
break #中止循环!
最近看了很多python做爬虫的应用,包括扒B站的视频。也扒了些。欢迎交流。
页:
[1]