alecc 发表于 2020-11-24 18:32:00

求教: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       #中止循环!


alecc 发表于 2020-11-24 18:39:18

最近看了很多python做爬虫的应用,包括扒B站的视频。也扒了些。欢迎交流。
页: [1]
查看完整版本: 求教:python爬取云展网图片并还原成pdf文件的改进