找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 894|回复: 1

[讨论] 求教:python爬取云展网图片并还原成pdf文件的改进

[复制链接]

41

主题

282

回帖

1万

积分

钻石会员

积分
10544
发表于 2020-11-24 18:32:00 | 显示全部楼层 |阅读模式
在某论坛看到有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,千辛万苦的度娘,找到解决方案。也下载了几个文件。
发现,每次下载完后,要按任意键退出,下一次要重新启动系统。
——————————————— 再次分割 —  ————————————————————————
请高手改进一下,就是下载完后,回到初始状态,等候下一次下载(就是复制粘贴一下要下载的网页)
本人对编程完全是门外汉,所以不要笑话。
谢谢。


  1. import os
  2. import requests
  3. from lxml import etree
  4. import img2pdf

  5. 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'}
  6. url = input('请输入云展网图集网址:')
  7. splurl = url.split('/')            #分割网址,准备下面判断
  8. if 'index.html' not in splurl:                #判断是那一种链接
  9.     res = requests.get(url , headers=headers)  #获取源码
  10.     res.encoding = res.apparent_encoding
  11.     xml = etree.HTML(res.text).xpath('//div[@class="show-book-title"]/a/@href')[0].split('/')  #取得book.yunzhan365.con网址进行分割
  12.     purl = xml[2] + '/' + xml[3] + '/' + xml[4] + '/files/' + 'mobile/'                            #构造图片下载网址前缀
  13.     pathname = etree.HTML(res.text).xpath('//div[@class="show-book-title"]/a/text()')      #获取名称
  14. else:
  15.     res = requests.get(url , headers=headers)  #获取源码   
  16.     res.encoding = res.apparent_encoding
  17.     pathname = etree.HTML(res.text).xpath('/html/head/title/text()')      #获取名称
  18.     purl = splurl[2] + '/' + splurl[3] + '/' + splurl[4] + '/files/' + 'mobile/'    #构造图片前缀

  19. path = 'D:/yunzhanwang/'                               #存储路径
  20. if not os.path.exists(path):               
  21.     os.makedirs(path)                       #如果路径不存在就创建
  22. m = 0      #定义图片名称变量
  23. imgs = []       #准备空列表放置图片内容
  24. with open(path + '/' + str(pathname[0]) + '.pdf' , 'wb') as f:       #创建并打开一个pdf文件,准备写入
  25.     while True:         #死循环获取并写入图片
  26.         m += 1      #名称变量
  27.         surl1 = 'http://' + purl + str(m) +'.jpg'          #构造图片链接
  28.         picurl = requests.get(surl1)       #获取图片内容
  29.         if picurl.status_code == 200:       #判断下 如果图片存在就写入列表
  30.             imgs.append(picurl.content)
  31.         else:  
  32.             f.write(img2pdf.convert(imgs))         #把列表中所有的图片内容 写入pdf
  33.             print(f'采集完毕!一共采集了{m -1}张,生成的pdf是{path}目录下【{pathname[0]}.pdf】')
  34.             break       #中止循环!
复制代码


41

主题

282

回帖

1万

积分

钻石会员

积分
10544
 楼主| 发表于 2020-11-24 18:39:18 | 显示全部楼层
最近看了很多python做爬虫的应用,包括扒B站的视频。也扒了些。欢迎交流。
回复 送鲜花 仍鸡蛋

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|爱好网 ( 赣ICP备14007844号-1 )

GMT+8, 2025-4-30 16:11 , Processed in 0.069714 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表