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

news2024/12/22 23:22:04

文章目录

    • 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/1136517.html

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

相关文章

员工福利平台设计方案

需求背景: 1、杭州行政希望给员工有一个福利平台,可以通过该福利平台,一方面可以结合公司周围的实体店,给到员工一些福利的商品,员工可以自行去这些商家进行消费。 2、公司可以通过福利平台,给员工账户进…

HackTheBox-Starting Point--Tier 0---Synced

文章目录 一 题目二 实验过程 一 题目 Tags Rsync、Network、Protocols、Reconnaissance、Anonymous/Guest Access译文:Rsync、网络、协议、侦察、匿名/访客访问Connect To attack the target machine, you must be on the same network.Connect to the Starting…

一、【Photoshop如何根据不同类型图像抠图】

文章目录 前言图形结构1、规则图形2、不规则图形 图形颜色1、轮廓清晰2、颜色分明 前言 当我们有抠图需求的时候,不要一开始就想着我怎么去把它抠出来,首先应该分析图形的特点,然后再去选取合适的工具,这样才可以做到事半功倍&am…

干货!分享Nginx搭建web测试报告服务器的落地方案

Nginx搭建web测试报告服务器的实现思路 有这样一个需求:把自动化测试过程中生成的html测试报告能够通过浏览器直接访问查看! 实现思路很简单,就是部署一个web服务器,然后把测试报告部署到web服务器的指定目录即可,然…

从有序顺序表中删除所有值重复的元素,使表中所有元素的值均不同

从有序顺序表中删除所有值重复的元素 代码思路: 如果是无序顺序表,删除重复值你就要遍历整个顺序表,找到对应值然后删掉, 但是这里题目说了是有序,那重复值肯定是连在一起的, 用count记录重复值个数&#…

C#编程学习与实践

C#学习记录——博文目录_雷工笔记的博客-CSDN博客 为了便于查看阅览C#相关的博文特意编辑目录,方便查看对应的博文: 一、功能类博文 A001-如何设置程序代码行号 A002-如何使VisualStudio开发环境全屏显示及相关快捷方式汇总 A003-为程序设置版本和帮助…

《动手学深度学习 Pytorch版》 10.3 注意力评分函数

上一节使用的高斯核的指数部分可以视为注意力评分函数(attention scoring function),简称评分函数(scoring function)。 后续把评分函数的输出结果输入到softmax函数中进行运算。最后,注意力汇聚的输出就是…

PC浏览器获取京东key和pin码

1。 登录京东网站 京东 2。快捷键按F12 打开开发者模式或者下图打开 3. 找到Cookie 4. 复制 pt_keyAAJlOf5ZADDabccjhaljhdgsTU2gbszktPPPD7my5-QN88OZc4mI3__SYGUDyt8GgpbCkVPk; pt_pinjd_9jghsakdjg7687b8;

【广州华锐互动】VR公司工厂消防逃生演练带来沉浸式的互动体验

在工业生产过程中,安全问题始终是我们不能忽视的重要环节。特别是火灾事故,不仅会造成重大的经济损失,更会威胁到员工的生命安全。传统的消防安全训练方法,如讲座、实地演练等,虽然具有一定的效果,但是无法…

YOLOv5 onnx \tensorrt 推理

一、yolov5 pt模型转onnx code: https://github.com/ultralytics/yolov5 python export.py --weights yolov5s.pt --include onnx二、onnx 推理 import os import cv2 import numpy as np import onnxruntime import timeCLASSES [person, bicycle, car, motorcycle, airpl…

strace跟着-编译和解决sip的bus srror问题记录

1 问题: 我编译了一个开源sip代码,可以确定的是,在nuc980dk61yc、nuc97251y上都可以跑的正常程序, 但在该开发板(NUC97261Y)上运行,报错bus error; 此文记录了 解决该问题的过程 我手里有一个97…

Dubbo 路由及负载均衡性能优化

作者:vivo 互联网中间件团队- Wang Xiaochuang 本文主要介绍在vivo内部针对Dubbo路由模块及负载均衡的一些优化手段,主要是异步化缓存,可减少在RPC调用过程中路由及负载均衡的CPU消耗,极大提升调用效率。 一、概要 vivo内部Java…

【STM32】STM32中断体系

一、STM32的NVIC和起始代码中的ISP 1.NVIC(嵌套向量中断控制器) (1)数据手册中相关部分浏览 (2)地址映射时0地址映射到Flash或SRAM (3)中断向量表可以被人为重新映射,一般用来IAP中 (4)STM32采用一维的中断向量表 (5)中断优先级设置有点复杂,后面细说 1…

windows10专业版优化记录

用来记录我的windows10专业版配置的所有设置 资源管理器占用CPU资源高 gpedit.msc打开本地组策略管理器 这样时不时资源管理器会占用CPU高。 禁用的service的列表 Problem Reports and Solutions Control Panel Support Diagnostic Policy Service 组件诊断服务 WMI Prov…

如何进行渗透测试以提高软件安全性?

对于各种规模的企业和组织来说,软件安全是一个至关重要的问题。随着网络攻击越来越复杂,软件中的漏洞越来越多,确保你的软件安全比以往任何时候都更重要。提高软件安全性的一个有效方法是渗透测试(penetration testing&#xff09…

基于Or-Tools的整数规划问题求解

基于Or-Tools的整数规划问题求解 Or-Tools官网整数规划问题导入线性求解器声明 MIP 求解器定义变量定义约束条件定义目标函数调用 MIP 求解器打印结果完整代码 Or-Tools官网例题:求解大规模问题的数组表示构造数据实例化求解器定义变量定义约束条件定义目标函数调用求解器 完整…

罗马数字转整数------题解报告

题目&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 很简单&#xff0c;感觉没什么可以讲的&#xff0c;就是按照题目要求做判断就好了 public int romanToInt(String s) {char []arg s.toCharArray();int sum 0;for(int i0;i<arg…

【JAVA学习笔记】45 - (35 - 43)第十章作业

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter10/src/com/yinhai/homework10 1.静态属性的共享性质 判断下列输出什么 public class HomeWork01 {public static void main(String[] args) {Car c new Car();//无参构造时改变color为red…

鸿蒙跨平台框架来了ArkUi-X

前言&#xff1a; 各位同学大家有段时间没有给大家更新博客了 之前鸿蒙推出了鸿ArkUi-X 框架所以就写个文章分享一下 效果图&#xff1a; 首先需要下载支持 ArkUI-X 套件的华为开发工具 DevEco &#xff0c;版本为 4.0 以上&#xff0c;目前可以下载预览版进行体验。下载地址…