需求及编程思路
###############################################
# 1.找到所有图片的url
# 2.下载图片
#下载网页首页,保存为一个文件
#从网易文件中的每一行查找图片地址,收集网址到一个列表中
#遍历文件查找文件地址
###############################################
#导入模块
import wget
import os
import re
#定义一个函数,参数为fname,匹配正则,编码不输入时使用默认的utf-8
def get_url(fname,patt,encoding=None):
#定义一个空列表
result=[]
#对正则表达式进行编译
cpatt=re.compile(patt)
#从网易文件中的每一行查找图片地址,收集网址到一个列表中
with open(fname,encoding=encoding)as fobj:
#遍历文件查找文件地址
for line in fobj:
m=cpatt.search(line)
#找到一条就追加进列表
if m:
result.append(m.group())
return result
if __name__ == '__main__':
img_dir='/tmp/163'
fname163='/tmp/163/163.html'
url163='http://www.163.com'
#如果不存在保存图片的目录,则创建
if not os.path.exists(img_dir):
os.mkdir(img_dir)
#如果网易首页文件不存在,则下载
if not os.path.exists(fname163):
wget.download(url163,fname163)
#取出网易首页中所有的图片地址
img_patt='(http|https)://[-\w/.]+\.(jpg|png|jpeg|gif)'
#网易网页使用的编码是gbk,不是utf8
img_list=get_url(fname163,img_patt,'gbk')
#print(img_list)
#下载图片,把列表中的每一个图片地址进行下载
for url in img_list:
wget.download(url,img_dir)
运行结果展示
ls /tmp/163/
photo%2F0001%2F2019-11-13%2FETS06FBV56NT0001NOS (1).jpg
photo%2F0001%2F2019-11-13%2FETS06FBV56NT0001NOS.jpg
photo%2F0001%2F2019-11-13%2FETS0I0JD56NT0001NOS (1).jpg
photo%2F0001%2F2019-11-13%2FETS0I0JD56NT0001NOS.jpg
qingsongyike (1).jpg
qingsongyike.jpg
renjian (1).jpg
renjian.jpg
shentimima (1).jpg
shentimima.jpg
shudu (1).jpg
shudu.jpg
space (1).gif
查看图片
eog /tmp/kanke.jpg