首页 > 编程语言 >python网络爬虫数据解析之正则

python网络爬虫数据解析之正则

时间:2023-01-07 20:12:52浏览次数:31  
标签:src img headers python 爬虫 url 正则 图片

本节内容,讲解爬取网络图片,利用正则匹配图片地址

请求网页之后,响应部分内容如下图:

 

 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('所以图片下载完成!')

 

标签:src,img,headers,python,爬虫,url,正则,图片
From: https://www.cnblogs.com/chengshu1258/p/17033362.html

相关文章

  • 正则表达式和EXCESS系统
    尾数部分使用正则表达式(按照特定的规则来表示数据的形式即为正则表达式,除小数外,字符串以及数据库等都有各自的正则表达式),可以将表现形式多样的浮点数统一为一种表现形式。......
  • [oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines
    换行回车回忆上次内容区分概念​terminal​​终端主机网络中最终的端点​TeleTYpewriter​电传打印机终端硬件​shell​终端硬件基础上的软件壳子​Console​​控制台......
  • [oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines
    换行回车回忆上次内容区分概念terminal终端主机网络中最终的端点TeleTYpewriter电传打印机终端硬件shell终端硬件基础上的软件壳子Conso......
  • 【Python】回调函数
    回调函数参考地址:https://blog.csdn.net/weixin_41605937/article/details/120248917回调函数就是一个通过函数名调用的函数,这个被传入的、后又被调用的函数就称为......
  • Python接口自动化系列- python读取json文件06
    一、说明JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。json的文件格式:使用大括号来区分表示并存储数据;二、用法impo......
  • 【Python】Paramiko模块_连接sftp上传下载执行命令
    Paramiko模块是基于Python实现的SSH远程安全连接,用于SSH远程执行命令、文件传输等功能。paramiko2.4.2依赖cryptography,是使用SSHv2协议(底层使用的是cryptography)......
  • 如何通过 Python 与 ChatGPT 对话
    文章目录​​简介​​​​安装OpenAIAPI​​​​实例1​​预备条件:1.科学上网;2.​​注册OpenAI账号​​。简介ChatGPT是GPT-3语言模型的变体,专为会话语言生成而......
  • conda发行版比较@python环境管理@conda命令的基本操作@配置conda
    文章目录​​conda发行版比较@python环境管理@conda命令的基本操作​​​​ref​​​​conda官网​​​​conda分类​​​​miniconda​​​​anaconda​​​​文档​​​​......
  • python通过API接口修改Jenkins job的参数默认值
    文章目录​​一、初级版:修改一个参数的默认值​​​​`需求:把t1项目的DB_TYPE的默认值从mysql改为oracle`​​​​`代码`​​​​`效果`​​​​二、中级版:同时修改多个参数......
  • python画图
    #!pip install matplotlib==3.0.0 import matplotlib.pyplot as pltz = []#生成数据 for i in range(50):    z.append(random.randint(-......