python爬虫之正则表达式实战----爬取图片

news2024/9/22 13:27:18

文章目录

    • 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/')
    # 指定URL
    url = '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.coloradmin.cn/o/1135029.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【springcloud-config】配置中心客户端导入依赖spring-cloud-config-server后,maven一直爆红问题解决

问题描述 配置中心客户端导入了 spring-cloud-config-server 后&#xff0c;导入依赖爆红&#xff1b; 解决办法&#xff1a; 参考官网中文文档&#xff1a;spring-cloud -config 配置中心 中文文档 补充导入 spring-config-starter-config 配置即可 <!--springcloud-c…

Transformer英语-法语机器翻译实例

依照Transformer结构来实例化编码器&#xff0d;解码器模型。在这里&#xff0c;指定Transformer编码器和解码器都是2层&#xff0c;都使用4头注意力。为了进行序列到序列的学习&#xff0c;我们在英语-法语机器翻译数据集上训练Transformer模型&#xff0c;如图11.2所示。 da…

【设计模式】第5节:创建型模式之“简单工厂、工厂方法和抽象工厂模式”

一、简单工厂模式 ProductFactory是创建商品的工厂&#xff0c;商品Product可以实现Product接口中的一些功能。 当需要根据入参的不同生成多种不同的产品时&#xff0c;可以将生成不同产品的逻辑剥离出来&#xff0c;使用产品工厂创建不同的产品。 二、工厂方法 ConcreteFact…

知识点滴 - Email地址不区分大小写

电子邮件地址本身对字符大小写不敏感。这意味着实际的电子邮件地址&#xff0c;如 "exampleemail.com"&#xff0c;并不区分字母的大小写。无论你输入的是大写字母还是小写字母&#xff0c;它仍然会到达同一个电子邮件账户。例如&#xff0c;如果您的电子邮件地址是 …

信创生态丨九州未来与超聚变完成兼容性互认证

近日&#xff0c;九州未来与超聚变积极开展了兼容性适配工作&#xff0c;并完成产品兼容性互认证。双方兼容性测试基于Intel64、鲲鹏架构完成&#xff0c;测试结果显示&#xff1a;九州未来Animbus IaaS V8可基于超聚变FusionOS 23服务器操作系统安全稳定运行&#xff0c;产品相…

并发编程-线程池ForkJoinPool工作原理分析

由一道算法题引发的思考 算法题&#xff1a; 如何充分利用多核CPU的性能&#xff0c;快速 对一个2千万大小的数组进行排序&#xff1f; 分解 求解 合并 这道算法题可以拆解来看&#xff1a; 1&#xff09;首先这是一道排序的算法题&#xff0c;而且是需要使用高效的排序算法…

[量化投资-学习笔记003]Python+TDengine从零开始搭建量化分析平台-Grafana画K线图

在前面两个笔记&#xff1a; PythonTDengine从零开始搭建量化分析平台-数据存储 PythonTDengine从零开始搭建量化分析平台-MA均线的多种实现方式 中有提到使用 Grafana 画图&#xff0c;不过画的都是均线。除了均线&#xff0c;Grafana 非常人性的提供离 K线图模块。 配置简单…

深度学习 anaconda 安装问题

配置anaconda 在官网下载匹配版本的anaconda&#xff08;官网下载可能时间比较长&#xff09;&#xff0c;可以选择清华镜像。 安装过程默认即可&#xff0c;或者根据情况进行修改。 旧版本是可以在安装的时候勾选添加路径到环境变量中的&#xff0c;但是我安装的是2023.9月…

代码随想录算法训练营第三十三天丨 贪心算法part04

860.柠檬水找零 思路 这道题目刚一看&#xff0c;可能会有点懵&#xff0c;这要怎么找零才能保证完成全部账单的找零呢&#xff1f; 但仔细一琢磨就会发现&#xff0c;可供我们做判断的空间非常少&#xff01; 只需要维护三种金额的数量&#xff0c;5&#xff0c;10和20。 …

计算机中了mallox勒索病毒怎么办,勒索病毒解密,数据恢复

最近一段时间&#xff0c;云天数据恢复中心陆续收到很多企业的求助&#xff0c;企业的计算机服务器遭到了mallox勒索病毒攻击&#xff0c;导致企业的数据库无法正常使用&#xff0c;严重影响了企业的正常生产生活&#xff0c;为此&#xff0c;云天数据恢复中心的工程师通过对此…

【深度学习】使用Pytorch实现的用于时间序列预测的各种深度学习模型类

深度学习模型类 简介按滑动时间窗口切割数据集模型类CNNGRULSTMMLPRNNTCNTransformer 简介 本文所定义模型类的输入数据的形状shape统一为 [batch_size, time_step&#xff0c;n_features]&#xff0c;batch_size为批次大小&#xff0c;time_step为时间步长&#xff0c;n_feat…

Promise及相关知识细学

学习关键语句: Promise promise学习 promise.all promise.race promise.resolve 1. 写在前面 promise 是前端绕不开的东西 , 所以我们一定要好好学习 , 写这篇文章的目的是加深对 promise 的学习和使用程度 2. 开始 2.1 准备 首先创建一个文件夹 , 里面新建一个 index.htm…

Navicat 16 支持 Redis Cluster 集群模式 | 新功能 √

Redis Cluster 适用于需要处理大量数据和高并发访问&#xff0c;并且需要保证高可用性和可扩展性的场景。它在国内许多行业中都得到了广泛的应用。为了满足广大专业用户的需求&#xff0c;Navicat 16 再次升级&#xff0c;新增 Redis Cluster 功能&#xff0c;为Redis 用户带来…

FreeRTOS 计数型信号量 详解

目录 什么是计数型信号量&#xff1f; 计数型信号量相关 API 函数 1. 创建计数型信号量 2. 释放二值信号量 3. 获取二值信号量 计数型信号量实操 什么是计数型信号量&#xff1f; 计数型信号量相当于队列长度大于1 的队列&#xff0c;因此计数型信号量能够容纳多个资源&a…

探索JavaScript ES6+新特性

JavaScript是一门十分流行的编程语言&#xff0c;它不断发展演变以适应现代Web开发需求。ES6&#xff08;也称为ECMAScript 2015&#xff09;是JavaScript的第六个版本&#xff0c;引入了许多令人兴奋的新特性和语法糖。本文将介绍一些ES6中最有趣和实用的特性。 箭头函数 箭…

【人脸检测 FPS 1000+】ubuntu下libfacedetection tensorrt部署

TensorRT系列之 Windows10下yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov5 tensorrt模型加速…

解决问题:Expected one result (or null) to be returned by selectOne(),but found: 2]

在做一次数据迁移后&#xff0c;系统登录失败&#xff0c;日志报错&#xff1a; 原因&#xff1a;在数据迁移账号时&#xff0c;用户账号有两个相同的账号&#xff0c;所以导致登录失败。

成功项目经理总结的20个项目管理经验

大家好&#xff0c;我是老原。 有人说&#xff1a;项目管理是变理想为现实&#xff0c;化抽象为具体的一门科学和艺术。 这是对项目管理的一种精辟总结。项目管理专业的方法和知识能教会我们如何快捷、科学、艺术地做事。 因为它除了交付项目&#xff0c;更能管理人生。 毕…

代码随想录 | Day56

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 今日学习目标一、算法题1.最长公共子序列2.不相交的线3.最大子数组和 今日心得学习及参考书籍 今日学习目标 最长公共子序列&#xff08;1143&#xff09; 不相交的…

数据结构与算法—栈

目录 一、栈的概念及结构 二、栈的实现 1、声明栈结构体 2、初始化 3、 销毁 4、 入栈&#xff08;压栈&#xff09; 5、出栈&#xff08;弹栈&#xff09; 6、栈的大小 OJ练习 完整版&#xff1a; Stack.h声明 Stack.c函数 test.c参考测试用例 一、栈的概念及结构…