爬取网上的图片
from urllib.request import urlopen from urllib import request import re import requests def open(url): """ 将网站内容转换成字符串 :param url: :return: 字符串 """ u = urlopen(url).read().decode('gbk') # 将网站打开,并将网页内的内容转换成gbk类型的字符串 return u def gaoqing(urlname, url): """ 找到高清图片的地址 :param urlname: 文件的名称 :param url: 图片的查看地址 :return: """ url = f"http://pic.netbian.com{url}" # 将图片的地址和官网拼接成图片的查看图片的地址 u = urlopen(url).read().decode('gbk') # 将网站内容转换成字符串 a = re.search('<img src="(?P<pic>.*?)" data-', u) # 利用正则找出图片的具体地址 path = 'http://pic.netbian.com' + a.group(1) # 拼接 s = pic_file(urlname, path) # 下载,图片 def pic_file(jpg_name, path): request.urlretrieve(path, f'./图片存放/{jpg_name}.jpg') # 下载图片,保存到./图片存放目录下 return True def com_index(str_path, num): cod = {} com = re.search('<ul class="clearfix">.*?</ul>', str_path, re.S) # 查找页面内的图片地址存放区域 if num == 1: # 第一页 com_url = re.compile(r'<li><a href="(?P<url>.*?)" title="(?P<title>.*?)" target=', re.S) # 查找图片的查看地址 elif num > 1: # 不是第一页时 com_url = re.compile(r'<li><a href="((?P<url>.*?))".*?alt="(?P<title>.*?)" /><b>', # 查找图片的查看地址,和图片名称 re.S) com_url = com_url.finditer(com.group()) # 将查找到的图片查看地址和名称,利用finditer for i in com_url: cod[i.group('title')] = i.group('url') # 将 写入到字典返回。 return cod for i in range(230, 1136): # 网站一共有1135页, cod = {} try: if i == 1: url = 'http://pic.netbian.com/index.html' # 首页地址 elif i > 1: url = f'http://pic.netbian.com/index_{i}.html' # 其他页的地址 a = open(url) # 获得网页内容的字符串 cod = com_index(a, i) # 获得网页中图片的查看地址,和图片名称对应的字典 for k, i in cod.items(): gaoqing(k, i) # 获得图片的具体地址,并下载 except: continue