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