关于**爬取图片**的基本上就是以上的代码了,主要的逻辑就是获取某一话网页上为**漫画图的图片链接**并保存下来,为了多爬取几话,我们还要**获取网页上的下一话的链接**,然后访问下一话继续获取链接。为了后期的拼接,我们需要把**每一话尽量分到一个文件夹**,然后保存,所以有了创建文件夹和保存的函数。代码写的时间有些长了,大概的逻辑就是这样子的。有一点需要注意的是,一话中包含的图片太多的话,在保存图片哪里是会多创建该话的文件夹的,因为后期拼接图片要求不能太长。
import os
from PIL import Image
import cv2
dir = "E:\\download\\pengran\\"
sdir = "E:\\download\\xindong\\"
width = 750
def creat_img(path, height, width, spath):
suh = 0
imgs = [Image.open(os.path.join(path, str(i)+".jpg")) for i in range(len(os.listdir(path)))]
result = Image.new(imgs[0].mode, (width, height))
for i, img in enumerate(imgs):
pic_path = os.path.join(path, str(i)+".jpg")
im = cv2.imread(pic_path)
imh = im.shape[0]
result.paste(img, box=(0, suh))
suh += imh
result.save(spath)
def get_sunh(path):
sum_h = 0
dirlist = os.listdir(path)
for i in dirlist:
pic_path = os.path.join(path, i)
img = cv2.imread(pic_path)
img_h = img.shape[0]
sum_h += img_h
return sum_h
def createpath(path):
flag = True
isExists = os.path.exists(path)
if not isExists:
os.makedirs(path)
else:
flag = False
return flag
def path_list(num):
pl = []
for i in range(1, 5):
if i == 1:
path = dir + str(num)
else:
path = dir + str(num) + "-" + str(i)
if os.path.exists(path): pl.append(path)
return pl
for i in range(1, 201):
list = path_list(i)
for j in list:
name = j.split("\\")[-1]
spath = os.path.join(sdir, str(name) + ".jpg")
print(spath)
height = get_sunh(j)
creat_img(j, height, width, spath)
最后的结果:数字代表第几话,“-”后面的数字是因为一话不能一次拼接,之后分批拼接。PS:不能保证一个一话的两图片分割良好,这是网站放图的原因。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190413194000956.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzE1OTYyOA==,size_25,color_FF3FFF,t_70#pic_center)
此处本应该放置一些过程的图的,但是由于这些图片挺占空间的就给删掉了,下次爬取图片的时候,我就会把这些过程的截图更新到本博客。
from RandomUAMiddleware import RandomUAMiddleware
from imgWebInfo import lenON, imgWebInfo
同样的,din
根据博客的分类,分成四类来爬取,其中最多的一类照片有2886张,这也是这次爬取中踩坑最多的一类。
共爬取4513张,耗时 117min 37sec
以最多的一类为例子记录一下。
过程分为:
获取每篇博客的链接
获取博客中每张的链接
获取每张的二进制信息
1.获取每篇博客的链接
post_href = []#博客链接
于是我打开了控制台,发现地图本来是长的这个样子
链接: https://pnr.sz.gov.cn/d-suplicmap/tileszmap_1/rest/services/SZMAP_BASEMAP_GKDL/MapServer/tile/1/7...
[分析]:动漫之家的反爬虫主要是靠User-Agent,加一个headers就好了。这里主要讨论一下如何获取img_urls。
分析漫画第一章第一页可以发现,<head>标签里的第一个script脚本里已经生成了这一章所有图片的链接(中间那个加密函数分析了一下,大概就是替换吧,以后有兴趣再研...
技术无罪,仅供学习
最近闲来无事看漫画,上网找了一堆漫画网站看漫画,懒得一个个找,就写了这个脚本(当然GUI版本花我4天时间。。),当然我自己也是在看正版漫画的bilibili和腾讯动漫的。
代码十分辣鸡,各大佬轻喷。
爬百年漫画。
github。
无GUI版本
#getComic.py
import requests,re,time,os,threading,sys
from bs4 imp...