简单的178漫画下载器

自己写的漫画下载器 用来下载178完结漫画 用来保存

用法:把要下载的漫画地址复制到软件点击下载就是了

下完文件在软件目录中

from lxml import etree
import requests
import re
import execjs
import sys
import json
import os
from PIL import Imageclass Spider():def __init__(self, url):self.tempurl = urlself.headers = {'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1','cookie': 'UM_distinctid=1638b27abaf146-0b1d75740d4133-52693478-13c680-1638b27abb066; show_tip_1=0; CNZZDATA3470106=cnzz_eid%3D320706176-1532649440-https%253A%252F%252Fmanhua.dmzj.com%252F%26ntime%3D1533193311; CNZZDATA1000465408=1196428649-1527042905-https%253A%252F%252Fwww.baidu.com%252F%7C1539671806; CNZZDATA1000465515=1879849850-1527044952-https%253A%252F%252Fwww.baidu.com%252F%7C1539672264; display_mode=1; pt_s_198bb240=vt=1539672637572&cad=; pt_198bb240=uid=axDGwW5njubICm6c4HSMhA&nid=0&vid=M8Z/D4L7pD2pXmKvRYVo0A&vn=17&pvn=2&sact=1539672641787&to_flag=0&pl=J8gHIAMoYA2Eg1lD2m4zWQ*pt*1539672637572; CNZZDATA30043528=cnzz_eid%3D223015019-1533021818-https%253A%252F%252Fmanhua.dmzj.com%252F%26ntime%3D1539667867; CNZZDATA30039253=cnzz_eid%3D1296344247-1533023188-https%253A%252F%252Fmanhua.dmzj.com%252F%26ntime%3D1539671932'}self.zp={}def paseUrl(self,url):r = requests.get(url, headers= self.headers)return r.content.decode('utf-8')# 得到所有漫画的所有话数和所有地址def getManHualink(self,htmlstr):htmlstr = etree.HTML(htmlstr)links = htmlstr.xpath("//div[@class='cartoon_online_border']//li/a/@href")links.append(htmlstr.xpath("//div[@style='display:none']//li/a/@href"))title = htmlstr.xpath("//div[@class='cartoon_online_border']//li/a/@title")manhuatitle = htmlstr.xpath("//span[@class='anim_title_text']/a/h1/text()")[0]return title,links,manhuatitledef getManHualink2(self,htmlstr):htmlstr = etree.HTML(htmlstr)links = htmlstr.xpath("//div[@class='tab-content tab-content-selected zj_list_con autoHeight']//li/a/@href")title = htmlstr.xpath("//div[@class='tab-content tab-content-selected zj_list_con autoHeight']//li/a/@title")manhuatitle = htmlstr.xpath("//div[@class='comic_deCon']/h1/a/text()")[0]return title,links,manhuatitle# 保存漫画def saveFile(self,title,manhuatitle):if(os.path.exists(manhuatitle)==False):os.mkdir(manhuatitle)for t in title:if(os.path.exists(manhuatitle+'\\'+t)==False):os.mkdir("{}\{}".format(manhuatitle,t))new_pic=[]for url in self.zp[t]:pic = requests.get(url, headers=self.headers).contenttname = '.\{}\{}\{}.jpg'.format(manhuatitle,t,self.zp[t].index(url))new_pic.append('{}.jpg'.format(self.zp[t].index(url)))print(tname)with open(tname,'wb') as f:f.write(pic)try:self.savepdf(new_pic,"{}\{}".format(manhuatitle,t),'.\{}\{}.pdf'.format(manhuatitle,t))except Exception:continueelse:passfinally:passprint("保存完毕")def savepdf(self,new_pic,path,pdf_name):im_list = []im1 = Image.open(os.path.join(path, new_pic[0]))new_pic.pop(0)for i in new_pic:img = Image.open(os.path.join(path, i))if img.mode == "RGBA":img = img.convert('RGB')im_list.append(img)else:im_list.append(img)im1.save(pdf_name, "PDF", resolution=100.0, save_all=True, append_images=im_list)print("输出文件名称:", pdf_name)#  解析js 获取漫画图片地址def paseJs(self,url):tempurl = 'https://manhua.dmzj.com{}'.format(url)self.headers['referer'] = tempurlhtmlstr = self.paseUrl(tempurl)jscode =re.findall(r"var page = '';(.*?) var",htmlstr,re.S)[0].strip()jscode+=' function a(){ return pages }'ctx = execjs.compile(jscode)piclist = ctx.call('a')piclist =  piclist.split(",")ptemp =[]for p in piclist:s = re.findall(r'\"(.*)\"',p)[0]ptemp.append('https://images.dmzj.com/{}'.format(s))return ptempdef pasejs2(self,url):self.headers['referer'] = urlhtmlstr = self.paseUrl(url)jscode =re.findall(r"var page = '';(.*?)</script>",htmlstr,re.S)[0].strip()jscode+=' function a(){ return pages }'ctx = execjs.compile(jscode)piclist = ctx.call('a')piclist = re.findall(r'"page_url":"(.*?)","sum_pages',piclist,re.S)[0].strip()piclist = piclist.split("\r\n")ptemp =[]for p in piclist:ptemp.append("https://images.dmzj.com/{}".format(p))#print(ptemp)return ptempdef getPicList2(self,links,title):for t in title:self.zp[t] = self.pasejs2(links[title.index(t)])def getPicList(self,links,title):for t in title:self.zp[t] = self.paseJs(links[title.index(t)])def runspider(self):htmlstr = self.paseUrl(self.tempurl)title,links,manhuatitle = self.getManHualink2(htmlstr)self.getPicList2(links,title)self.saveFile(title,manhuatitle)def runspider2(self):# 得到改漫画的所有话数的所有地址htmlstr = self.paseUrl(self.tempurl)title,links,manhuatitle = self.getManHualink(htmlstr)# 获取漫画主页通过js解析出所有图片地址self.getPicList(links,title)#保存漫画self.saveFile(title,manhuatitle)def run(self):print("正在努力地获取漫画图片------请稍等片刻")if re.findall('https://www.dmzj.com/info',self.tempurl):self.runspider()else:self.runspider2()if __name__ == '__main__':link = sys.argv[1]spider = Spider(link)spider.run()

from tkinter import *
from  tkinter  import ttk
import tkinter.messagebox
from ManHuaSpider import Spider
import webbrowser
import threading
def calcPlus():print('开始下漫画')links =link.get()spide = Spider(links)spide.run()text ='下载漫画完毕'tkinter.messagebox.showinfo('提示',text)def getweb():webbrowser.open("https://manhua.dmzj.com/update_1.shtml")
def getweb1():tkinter.messagebox.showinfo('关于',"本软件不得用于商业用途,仅做学习交流 更多内容请关注微信公众号 每天一游戏")def thread_it():'''将函数打包进线程'''# 创建t = threading.Thread(target=calcPlus) # 守护 !!!t.setDaemon(True) # 启动t.start()if __name__ == '__main__':root = Tk()root.title('178漫画下载器--by 每天一游戏')link = StringVar()lb = tkinter.Listbox()f1 = Frame(root)f1.pack(padx=10,pady=5)Label(f1, text="要下载的漫画链接:").grid(row=0,column=0)f1r = Frame(f1)f1r.grid(row=0, column=1)e1 = Entry(f1r, textvariable=link, width=50).grid(row=0,column=1)Button(f1r, text="下载", command=thread_it).grid(row=0, column=2)Button(f1r, text="打开网站", command=getweb).grid(row=0, column=3)Button(f1r, text="关于", command=getweb1).grid(row=0, column=4)mainloop()

用python写了个简单的178漫画下载器相关推荐

  1. 用python写的一个简易的云音乐播放器

    本人最近在学习python,在看了一些教程后,用python写了一个简单的云音乐播放器,下面把主要代码贴上来,其中用到了github上他人写的一个汉字转拼音的库,大家可以在github上找到. #co ...

  2. python 写游戏好简单啊,我用键盘可以随意控制角色了【python 游戏实战 04】

    前言 本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题.此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课 ...

  3. 用 Python 写了个简单的股票量化交易框架

    原文链接:用python写了个简单的股票量化交易框架 摘抄他人的文章,方便存个底. 集成了以前写的 [easytrader]( http://github.com/shidenggui/easytra ...

  4. Python 写一个命令行版的火车票查看器

    用python另一个抢票神器,你get到了吗? 2017年时间飞逝,转眼间距离2018年春节还有不到1个月的时间,还在为抢不到火车票发愁吗?作为程序员的我们撸一个抢票软件可好? 难以想象的数据, 预示 ...

  5. Python爬虫:多平台短视频去水印下载器

    Python爬虫:多平台短视频去水印下载器 功能介绍 各平台分解 抖音 快手 微视 皮皮搞笑 总结 源码仓库 本教程描述的爬取方案定档与2020年10月26日 郑重申明:该文章介绍的技术仅供用于学习, ...

  6. python:实现带GUI界面的Youtube下载器(附完整源码)

    python:实现带GUI界面的Youtube下载器 from pytube import * import os from tkinter import * from tkinter.filedia ...

  7. php和python写爬虫-一个简单的Python写的XML爬虫

    一个简单的Python写的XML爬虫 来源:程序员人生 发布时间:2013-11-06 16:22:29 阅读次数:1578次 原理很简单,读XML结构,返回值,判断,根据返回的值得到下一个XML的地 ...

  8. 我用 Python 写了一款炫酷音乐播放器,想听啥随便搜!

    作者:Dragon少年 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/hhladminh ...

  9. 【Python项目】Python基于tkinter实现笔趣阁小说下载器(附源码)

    前言 hello,大家好呀~ 笔趣阁小说应该很多小伙伴都知道 但是用Python实现一个笔趣阁小说下载器 那岂不是爽歪歪呀 基于tkinter实现的Python版本的笔趣阁小说下载器今天小编给大家实现 ...

  10. python写一个很简单的Atm机系统,使用pickle模块和json模块来保存数据

    我做的是一个很简单的Atm系统,很多都没约束条件 目的: 用面向对象思维来处理 运用文件的读写 文件的读写用pickle模块和json模块来处理 pickle模块: pickle模块处理数据功能很强大 ...

最新文章

  1. Microbiome:所谓的“富集培养”获得的微生物真的都是被“富集”出来的吗?
  2. 神经网络到底是如何做出决策的?
  3. Hibernate Validator用法
  4. SegNet 语义分割网络以及其变体 基于贝叶斯后验推断的 SegNet
  5. VC++ (三)虚函数与重载
  6. 习题6-6 使用函数输出一个整数的逆序数 (20 分)
  7. MySQL innodb_table_stats表不存在的解决方法
  8. Jeecg-Uniapp 移动框架开发环境搭建—— APP解决方案
  9. style 字体加粗_第9篇 Qt Quick入门教程之基础(九)文本显示和字体
  10. 思科、华为、华三交换机的线缆检测功能
  11. 华为盒子 鸿蒙,华为盒子真不值得买,网友总结了3个原因
  12. 安卓使用教程:(八门神器)破解游戏内购方法及原理
  13. WANLSHOP B2B2C + 社区种草 —— 运营级插件
  14. 云计算简史_云计算的概念和发展历史
  15. vhd虚拟机安装linux,总算搞定vhd的linux了(包括深度linux),给像我一样的菜鸟总结一下.........
  16. 数据密集型系统设计:索引及存储(B树、LSM树、OLTP及OLAP)
  17. ASP.NET Core 2.0 : 八.图说管道,唐僧扫塔的故事
  18. Selenium打开浏览器闪退问题(浏览器驱动是对应的前提)-解决办法
  19. 非常详细的讲解让你深刻理解神经网络NN(neural network)
  20. Python中的swap函数

热门文章

  1. 佳能Canon imageCLASS MF240 一体机驱动
  2. Zemax操作--9(全局坐标设定及使用方法)
  3. 植物大战僵尸修改存档用户名、关卡、金钱说明
  4. AndroidVideoCache-视频边播放边缓存的代理策略
  5. 应广单片机及mini-c快速入门
  6. 计算机械效率的简便公式,机械效率公式
  7. 使用Aria2下载百度网盘和115的资源
  8. 语音信号处理-python
  9. rup软件测试案例,rup软件测试基础.ppt
  10. P2P原理之设备发现