本节内容,讲解爬取网络图片,利用正则匹配图片地址
请求网页之后,响应部分内容如下图:
1 时间:2023/1/7 10:42 2 功能描述 3 1.进行指定标签的定位 4 2.标签或者标签对应的属性中存储的数据值进行提取(解析) 5 获取图片地址并下载 6 7 8 编码流程 9 1.指定url 10 2.发起请求 11 3,数据解析 12 4.持久化存储 13 14 ''' 15 import requests 16 import re # 导入正则模块 17 import os # 创建文件夹的时候使用 18 # 创建一个文件夹来保存下载的图片 19 if not os.path.exists('我的图片'): 20 os.mkdir('我的图片') 21 path = '我的图片' 22 23 url = 'https://www.7nua.com/nua/2022051081813.html' 24 headers= {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'} 25 # 发送请求并获取响应数据,响应数据是一个html文件 26 url_text = requests.get(url, headers=headers).text 27 # 正则匹配,需要保留的匹配数据,要用()括起来。 28 # 正则表达式要用一对单引号括起来 29 r = '<p><img src="(.*?)">' 30 # 调用正则方法findall(),第一个参数为正则表达式,第二次参数为应用的数据源,第三个参数re.S表示多行匹配,re.M表示单行匹配,一般都写多行匹配 31 # 其返回值是一个列表,主要,这里返回的是相对地址,还有自己补完整 32 lis = re.findall(r, url_text, re.S) 33 # print(lis) 34 # 我们可以复制一下图片地址,看看其完整地址是什么,好补充 35 for src in lis: 36 src = ' https://www.7nua.com'+src 37 # 请求到了图片的二进制数据,所以用content,而不用text 38 img_data = requests.get(url=src, headers=headers).content 39 # 生成图片名称,用切片函数split(),第一个参数表示以‘/'为切割符,切割好之后,取这个列表的最后一个元素,用-1 40 # 对图片地址字符串src,调用切片函数split 41 img_name = src.split('/')[-1] 42 # 保存图片 43 with open('{}/{}'.format(path,img_name), 'wb')as fp: 44 fp.write(img_data) 45 print(img_name, '下载成功!!') 46 print('所以图片下载完成!')