|
在某论坛看到有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')[0].split('/') #取得book.yunzhan365.con网址进行分割
- purl = xml[2] + '/' + xml[3] + '/' + xml[4] + '/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[2] + '/' + splurl[3] + '/' + splurl[4] + '/files/' + 'mobile/' #构造图片前缀
-
- path = 'D:/yunzhanwang/' #存储路径
- if not os.path.exists(path):
- os.makedirs(path) #如果路径不存在就创建
- m = 0 #定义图片名称变量
- imgs = [] #准备空列表放置图片内容
- with open(path + '/' + str(pathname[0]) + '.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[0]}.pdf】')
- break #中止循环!
复制代码
|
|