聚焦爬虫的编码流程:
指定url - 发起请求 - 获取响应数据 - 数据解析 - 持久化存储
原理概述:
因为解析的局部数据都在标签之间或者是标签对应的属性中进行存储,所以首先要进行指定标签的定位,然后对标签或者标签对应的属性中存储的数据进行提取(解析)。
先以一个正则提取图片地址的例子引入:
假设有一张图片,其地址写在下面的div标签中,需求是将该地址提取出来,只获取其中的图片路径:ex = <div class="thumb">.*?<img src="(.*?)" alt=.*?</div> (最终只会提取出里面的(.*?))
此时,该正则表示的就是//pic.qiushibaike.com/system/pictures/12172/121721100/medium/DNXDX9TZ8SDU6OK2.jpg。
<div class="context"> <a href="/article/121721100" target="_blank"> <img src="//pic.qiushibaike.com/system/pictures/12172/121721100/medium/DNXDX9TZ8SDU6OK2.jpg" alt="指引我有前进的方向"> </a> </div>
因此,采用正则匹配筛选出该页面所有的图片地址,然后通过finall()返回一个存放图片地址的列表,然后请求图片的二进制数据,进行持久化存储:
# 创建文件夹用于保存所有图片
# 如果qiutuLibs文件夹不存在,那么通过mkdir()创建
if not os.path.exists('./baoxiao'):
os.mkdir('./baoxiao')
...
# 采用正则匹配筛选出该页面所有的图片地址 ex = '<div class="content">.*?<img src="(.*?)" alt=.*?</div>' # 将该表达式作用于page_text,param1表示正则表达式,param2表示作用于哪个对象,param3表示单行匹配,最后findall返回的是列表 img_src_list = re.findall(ex,page_text,re.S) for src in img_src_list: # 拼接为一个完整的图片URL src = url + src # 请求到图片的二进制数据 img_data = requests.get(url=src,headers=headers).content # 持久化存储,需要一个固定的文件夹(通过os创建文件夹),并且每张图片需要命名 # 命名的话,根据图片地址最后的组成部分命名,比如//pic.qiushibaike.com/system/pictures/12172/121721100/medium/DNXDX9TZ8SDU6OK2.jpg中把最后部分切分split()出来,根据'/'切分,然后取最后一部分'-1' img_name = src.split('/')[-1] # 指定存储路径 imgPath = './baoxiao/' + img_name
最后成功实现:
【补充一部分正则内容】
标签:src,img,标签,地址,正则,解析,数据,图片 来源: https://www.cnblogs.com/TzySec/p/15812913.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。