当前位置: 首页 > news >正文

python爬虫之正则表达式解析实战

文章目录

    • 1. 图片爬取流程分析
    • 2. 实现代码—爬取家常菜图片

1. 图片爬取流程分析

  1. 先获取网址,URL:https://www.xiachufang.com/category/40076/
    在这里插入图片描述
  2. 定位想要爬取的内容
  3. 使用正则表达式爬取
  4. 导入模块
  5. 指定URL
  6. UA伪装(模拟浏览器)
  7. 发起请求,使用通过爬虫爬取整个页面
  8. 编译正则表达式(提取想要的内容)
  9. 解析请求内容
  10. 指定图片存储路径
  11. 持久化存储

2. 实现代码—爬取家常菜图片

# 导入模块
import ssl
import os
import re
import requests
if __name__ == '__main__':# 创建一个文件夹,保存所有的图片if not os.path.exists('./caipu/'):os.mkdir('./caipu/')# 指定URLurl = 'https://www.xiachufang.com/category/40076/'# 模拟浏览器headers = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'}# 使用通用爬虫对URL对应的一整个页面进行爬取,并获取响应数据page_text = requests.get(url=url, headers=headers).text# 编译正则表达式# re.compile()方法将正则表达式编译成一个对象,可以通过调用它的方法来对文本进行匹配操作。data_src_list = re.compile('data-src="(.*?)" width=')# 解析图片链接# findall():查找字符串中所有满足正则表达式的字符串,以列表的形式返回。data_src_url = data_src_list.findall(page_text)# print(data_src_url)for src in data_src_url:# 请求到图片的二进制数据img_data = requests.get(url=src,headers=headers).content# 生成图片名称# 由于http://xxxx.jsp后面带有问号,所以将其进行切片img_name = src.split('/')[-10].split('?')[0]# print(img_name)# 指定图片存储的路径imgPath = './caipu/'+img_name# 持久化存储with open(imgPath,'wb') as fp:fp.write(img_data)print(img_name, "下载成功!!!")
http://www.lryc.cn/news/210264.html

相关文章:

  • 什么是虚拟dom?
  • 大数据学习(18)-任务并行度优化
  • C++学习笔记之四(标准库、标准模板库、vector类)
  • IDEA部署SSM项目mysql数据库MAVEN项目部署教程
  • uniapp 将流转化为视频并播放 微信小程序
  • 【软考】系统集成项目管理工程师(十)项目质量管理【3分】
  • 七层负载均衡 HAproxy
  • SQL SELECT TOP, LIMIT, ROWNUM
  • vue3-admin-element框架登录如何修改?
  • 基于mysql的请假系统,java/springboot/jsp/javaweb/tomcat
  • 【Python机器学习】零基础掌握partial_dependence检验、检查
  • 前端Vue页面中如何展示本地图片
  • 基于PHP的图像分享社交平台
  • 【算法|动态规划No.31 | 01背包问题】01背包模板题
  • Azure - 机器学习:使用 Apache Spark 进行交互式数据整理
  • 4.5 final修饰符
  • Clickhouse数据库部署、Python3压测实践
  • 探索控制领域:从电视遥控器到自动驾驶【基础概念理解、应用实例】
  • 在R中安装CmdStanR的步骤-R4.3.1-CmdStanR-0.6.1.900
  • 安信可小安派AiPi 代码下载
  • 程序化交易(二)level2行情数据源接入
  • 4.6 static修饰符
  • C++头文件定义变量
  • [蓝桥杯-610]分数
  • Vue指令大全:深入探索Vue提供的强大指令功能
  • x210项目重新回顾之十七升级到linux4.19.114 +buildroot2018再讨论
  • shell_56.Linux永久重定向
  • CN考研真题知识点二轮归纳(1)
  • hadoop使用简介
  • WebSocketClient objects are not reuseable