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

4.正则提取html中的img标签的src内容

我们以百度贴吧的1吧举例

目录

1  把网页搞下来

2  收集url

3  处理url

4  空的src

5  容错

6  不使用数字作为文件名

7  并不是所有的图片都用img标签表示

8  img标签中src请求下来不一定正确

9  分页


 

1  把网页搞下来

搞下来之后,双击打开是这样的

2  收集url

我们实际拿的就是 img标签中src的内容,比如这个

我们通过正则获取一下

我们得到了这些结果

3  处理url

我们发现上面好多url都没有协议,那么我们需要给协议加上,然后发起请求,保存。我们用数字作为保存图像的名称

运行后发现报错了

4  空的src

错误的原因是我们获取的结果,第三条是空的

这种就是前端用来占位的,我们在保存的html中可以看到确实是没东西

这时候如果不确定的话,可以用浏览器访问,然后搜一下,发现在浏览器中它也是空的

5  容错

除了空的src,之后还可能会有很多问题,比起通过if来判断是否为空,在调试阶段中,我更倾向用try还except来捕获错误

这一次我们保存了很多的图片

但我们发现重复的图像太多了

6  不使用数字作为文件名

现在有很多方法来进行数据去重,比如使用hash库,我们这里使用文件名的方式去重,如果html中引入的文件相同,那他们的文件名也应该相同

我们发现有两种格式的url,一种是红色箭头的url以文件格式结尾,另一种是不以文件格式做结尾。但他们都有一个共同点,文件名都在最后一个斜杠的后面

那么我们可以这样写

  • 这样写有个缺点,对于查询字符串的url直接给了数字与png做名字

至此img的src内容已经全搞下来了

7  并不是所有的图片都用img标签表示

比如这张图

还有这张图

8  img标签中src请求下来不一定正确

比如这里,我保存的网页是这样的

但实际是这样的

我们这个时候就要关注img标签的其他属性,比如这里的 data-original与bpic,用浏览器访问data-original的地址,会得到缩略图

用浏览器访问bpic的地址会得到这张大图

9  分页

像这种分页一般由于url挂钩,第一页pn是0

第二页pn是50

之后的pn就会是100,150,200这种,我们可以利用这个特性爬取多页

发现可以成功爬取一些图片

相关文章:

4.正则提取html中的img标签的src内容

我们以百度贴吧的1吧举例 目录 1 把网页搞下来 2 收集url 3 处理url 4 空的src 5 容错 6 不使用数字作为文件名 7 并不是所有的图片都用img标签表示 8 img标签中src请求下来不一定正确 9 分页 1 把网页搞下来 搞下来之后,双击打开是这样的 2 收…...

安装对应版本pytorch和torchvision

遇见报错: ERROR: Could not find a version that satisfies the requirement torch (from versions: none) ERROR: No matching distribution found for torch 解决方法: 1、网站找到对应torch和torchvision版本,cp对应python版本&#xff…...

酷克数据与华为合作更进一步 携手推出云数仓联合解决方案

在一起,共迎新机遇!8月25-26日,2023华为数据存储用户精英论坛在西宁召开。酷克数据作为国内云原生数据仓库的代表企业,也是华为重要的生态合作伙伴,受邀参与本次论坛,并展示了云数仓领域最新前沿技术以及联…...

若依 MyBatis改为MyBatis-Plus

主要内容:升级成mybatis-plus,代码生成也是mybatis-plus版本 跟着我一步一步来,就可完成升级! 检查:启动程序,先保证若依能启动 第一步:添加依赖 这里需要在两个地方添加,一个是最…...

docker-ubuntu

docker ps docker images 拉取ubuntu镜像 docker pull ubuntu 启动 docker start podid docker run -itd -e TZAsia/Shanghai --name ubuntu-test -v /share:/shared -d ubuntu:latest 进入bash界面 docker exec -it podid /bin/bash 安装sudo apt-get install sudo …...

Mock 基本使用

mock解决的问题 开发时,后端还没完成数据输出,前端只好写静态模拟数据。数据太长了,将数据写在js文件里,完成后挨个改url。某些逻辑复杂的代码,加入或去除模拟数据时得小心翼翼。想要尽可能还原真实的数据&#xff0c…...

MySql学习笔记08——事务介绍

事务 基本概念 事务是一个完整的业务逻辑,是一个最小的工作单元,不可再分。 一个完整的业务逻辑包括一系列的操作,这些操作是整个业务逻辑中的最小单元,这些操作要么同时成功,要么同时失败。 由于只有DML语句中才会…...

AMEYA360:思瑞浦推出汽车级超低静态功耗高压LDO—TPL8031Q

聚焦高性能模拟芯片和嵌入式处理器创新研发的半导体公司——思瑞浦3PEAK(股票代码:688536),推出全新一代汽车级超低静态功耗高压线性稳压器——TPL8031Q。 TPL8031Q拥有支持3V~42V宽输入电压范围、3μA超低静态功耗、多种封装可选等性能优势,…...

保留 N 条数据功能 实现方案

需求:用户浏览某信息后 就插入一条浏览记录,该浏览记录限制只保留 N 条。 实现方案: 1. 插入记录 2. 查询总记录 3. 判断:总记录 是否大于 阈值 3.1 如果大于:总记录 - 阈值 获取到超出数量,将对超出数…...

SOME/IP TTL 在各种Entry 中各是什么意思?有什么限制?

1 服务发现 SOME/IP SD 服务发现主要用于 定位服务实例检测服务实例状态是否在运行发布/订阅行为管理SOME/IP SD 也是 SOME/IP 消息,遵循 SOME/IP 消息格式,有固定的 Message ID、Request ID 以及 Message Type 等。并对 SOME/IP Payload 进行了详细的定义。 SOME/IP SD …...

CSS中如何实现元素的旋转和缩放效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 元素的旋转和缩放效果⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚踏…...

Unity通过偏移UV播放序列帧动画

大家好,我是阿赵。   在Unity引擎里面用shader播放序列图,估计很多人都有用到了,我自己而已写过好几个版本。这里大概介绍一下。 一、原理 先说目的,我现在有一张这样的图片: 这张图片上面,有9个格子&a…...

无涯教程-Android - List fragments函数

框架的ListFragment的静态库支持版本,用于编写在Android 3.0之前的平台上运行的应用程序,在Android 3.0或更高版本上运行时,仍使用此实现。 List fragment 的基本实现是用于创建fragment中的项目列表 List in Fragments 示例 本示例将向您说明如何基于…...

【图解RabbitMQ-3】消息队列RabbitMQ介绍及核心流程

🧑‍💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…...

jmeter源码二次开发

本文以jmeter5.5为例,扩展“TCP Socket支持定长的返回字节流”功能。 一、 源码本地编译运行 1、在jmeter官网下载源码:jmeter各版本源码地址 2、在idea中用gradle导入jmeter源码,idea中要配置jdk,gradle,我用的是j…...

深入实现 MyBatis 底层机制的任务阶段4 - 开发 Mapper 接口和 Mapper.xml

😀前言 在我们的自定义 MyBatis 底层机制实现过程中,我们已经深入研究了多个任务阶段,包括配置文件的读取、数据库连接的建立、执行器的编写,以及 SqlSession 的封装。每个任务阶段都为我们揭示了 MyBatis 内部工作原理的一部分&a…...

分享一下在微信上有哪些微信活动可以做

微信营销活动是吸引更多用户和提高品牌知名度的有效策略。下面是一些微信营销活动的做法: 抽奖活动:通过设置奖品和参与条件,吸引用户参与抽奖活动。例如,可以设置关注公众号、转发活动页面等条件,吸引更多用户参与抽奖…...

视频监控/视频汇聚/视频云存储EasyCVR平台接入国标GB协议后出现断流情况,该如何解决?

视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。安防监控平台EasyCVR既具备传统安防视频监控的能…...

没有软件怎么管理固定资产

在当今数字化的世界中,我们已经习惯了使用各种软件来管理我们的日常生活和工作。然而,当我们面临一个看似简单的问题——如何管理固定资产时,我们可能会感到困惑。那么,如果没有软件,我们该如何进行资产管理呢&#xf…...

几种反序列化漏洞

1.PHP魔术方法 <?php class c {private $name hacker;function __construct() { // 构造方法&#xff0c;new时调用echo construct<br>;}function __serialize() { // 序列化时调用echo serialize<br>;return [hack];}function __unserialize($data) { // 反…...

无人机传感器技术解析:从IMU到激光雷达的全面指南

1. 无人机传感器的核心作用 当你操控无人机在空中自由翱翔时&#xff0c;有没有想过它为什么能如此听话&#xff1f;这背后是一整套传感器系统在默默工作。就像人类需要眼睛、耳朵和平衡感来感知世界一样&#xff0c;无人机也需要各种传感器来"感知"周围环境。这些传…...

告别局域网限制:用C-Lodop插件实现前端跨网段远程打印(保姆级配置指南)

突破物理边界&#xff1a;C-Lodop实现跨地域打印的工程实践 想象一下这样的场景&#xff1a;上海分公司的财务人员需要紧急打印一份合同&#xff0c;而唯一具备公章权限的打印机在北京总部。传统方案可能需要邮件转发、本地打印再扫描&#xff0c;或者依赖复杂的VPN配置——但现…...

BilibiliDown开源工具全攻略:突破限制获取B站Hi-Res无损音频

BilibiliDown开源工具全攻略&#xff1a;突破限制获取B站Hi-Res无损音频 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mir…...

JESD204B时钟系统解析——从设备时钟到多帧时钟的协同设计

1. JESD204B时钟系统全景解析 第一次接触JESD204B协议时&#xff0c;我被它复杂的时钟系统搞得晕头转向。这个高速串行接口协议之所以难啃&#xff0c;很大程度上就是因为其独特的时钟架构设计。在实际项目中&#xff0c;我遇到过因为时钟配置不当导致数据传输失败的案例&…...

智能家居DIY实战:用海凌科HLK-V20-SUIT语音模块改造你的旧台灯/风扇(STM32核心)

智能家居DIY实战&#xff1a;用海凌科HLK-V20-SUIT语音模块改造旧家电 去年夏天&#xff0c;我在工作室里大汗淋漓地调试电路板时&#xff0c;突然冒出一个想法&#xff1a;如果能用语音控制身边的老式台灯和风扇该多方便&#xff1f;于是开始了这场旧物智能化的改造之旅。本文…...

OpCore Simplify:突破性黑苹果OpenCore配置自动化工具终极指南

OpCore Simplify&#xff1a;突破性黑苹果OpenCore配置自动化工具终极指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore Simplify是一款革命…...

Notion扩展开发与自定义功能构建指南

Notion扩展开发与自定义功能构建指南 【免费下载链接】notion-enhancer an enhancer/customiser for the all-in-one productivity workspace notion.so 项目地址: https://gitcode.com/gh_mirrors/no/notion-enhancer notion-enhancer作为一款强大的开源工具&#xff0…...

Jupyter Notebook内核崩溃?别急着重装!试试这个Anaconda环境修复方案

Jupyter Notebook内核崩溃&#xff1f;别急着重装&#xff01;Anaconda环境修复全指南 当你正专注地编写代码&#xff0c;突然看到"内核似乎挂掉了&#xff0c;它很快将自动重启"的提示&#xff0c;那种挫败感我深有体会。作为数据科学工作者&#xff0c;Jupyter Not…...

TurtleBot3在Gazebo中的多机器人SLAM仿真:ROS2 Humble命名空间实战

TurtleBot3多机SLAM仿真&#xff1a;ROS2 Humble命名空间深度实践 在机器人开发领域&#xff0c;仿真环境的重要性不言而喻。它不仅能大幅降低硬件成本&#xff0c;还能提供可重复、可控的测试条件。ROS2 Humble作为当前长期支持版本&#xff0c;结合Gazebo仿真器和TurtleBot3…...

SDXL 1.0绘图工坊效果展示:多风格高清作品集,看看AI能画出多惊艳的图片

SDXL 1.0绘图工坊效果展示&#xff1a;多风格高清作品集&#xff0c;看看AI能画出多惊艳的图片 1. 开篇&#xff1a;当AI成为数字艺术家 想象一下&#xff0c;你只需要输入一段文字描述&#xff0c;就能在几秒钟内获得一张细节丰富、风格多样的高清图像——这不是科幻电影&am…...