截图:
说明:
下载指定页数的漫画分别存放到对应文件夹~
因为卸载3.6导致3.7不能直接运行py文件,所以只能用IDE启动了...
源码:[Python] 纯文本查看 复制代码
import requests
import os
import re
import time
class tu_pian(object):
def __init__(self,word,maxPage):#初始化
if maxPage == '':
self.maxPage=1
else:
self.maxPage = int(maxPage)
self.word = word
self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36'}#添反爬加请求头防止
self.start_url = 'http://www.guibb.cn/kongbumanhua/muou/page/{}/'#网页初始页
self.start_url_list = {}#创建一个网页的列表
for i in range(self.maxPage):#循环遍历
url = self.start_url.format(i+1)#使上面的url进行字符串格式化
html = requests.get(url,headers=self.headers)
page_list = re.findall('http://www.guibb.cn/html/[0-9]{1,}\.html',html.text)
for page_url in page_list:
key = re.findall('[0-9]{1,}',page_url)
if key != None:
key = key[0]
if key not in self.start_url_list:
self.start_url_list[key]=[]
if page_url not in self.start_url_list[key]:
self.start_url_list[key].append(page_url)
def get_content(self,url):
#print(url)
html = requests.get(url,headers=self.headers)#进行网络请求
#print(html.text)#打印网页源代码
img_list = re.findall('http://www.guibb.cn/wp-content/uploads/[0-9]{4}/[0-9]{2}/[a-zA-z0-9_\.]{6,}.jpg',html.text)#使用正则匹配图片
return img_list#返回图片列表
def save(self,key,start_url_list):#保存函数
for pic_url in start_url_list:#进行循环
#print(pic_url)#打印循环后的结果
end = re.search('(.jpg|.jpeg|.png)$',pic_url)#添加一个名为end的变量名,搜索picurl里的东西
if end == None:#进行if判断,如果等于无
pic_url = pic_url + '.jpg'#则添加后缀.jpg
try:#进行错误测试
path = './' + self.word +'/'+key
if os.path.exists(path) == False:
os.mkdir(path)
with open(path+ '/{}'.format(pic_url[-10:]), 'ab') as f:#使用with方法保存,+ 输入的文字 + 格式化picurl里面的图片名字防止重名
try:
pic = requests.get(pic_url,headers=self.headers,timeout=1)#进行网络请求,添加请求头,超过一秒则切换下一个
f.write(pic.content)#写入图片
except Exception:
pass
except Exception as e:
print(e)
pass
def run(self):
for key in self.start_url_list:
for url in self.start_url_list[key]:
start_url_list = self.get_content(url)
self.save(key,start_url_list)
if __name__ == '__main__':
word = input('请输入保存图片的文件夹名称:')
maxPage = input('请输入需要的页数:')
if os.path.exists(word) == False:
os.mkdir(word)
tupian = tu_pian(word,maxPage)
tupian.run()
input("下载完毕,按任意键退出")
其他:
第一次发主题,硬是没找到帖子“预览”在哪里。。。 |