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

『python爬虫』09. bs4实战之下载精美壁纸(保姆级图文)

目录

    • 爬取思路
    • 代码思路
      • 1.拿到主页面的源代码. 然后提取到子页面的链接地址, href
      • 2.通过href拿到子页面的内容. 从子页面中找到图片的下载地址 img -> src
      • 3.下载图片
    • 3. 完整实现代码
    • 总结


欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中

爬取思路

一个壁纸网站
https://www.umei.cc/bizhitupian/weimeibizhi/

大体思路

我们要找到这个a标签中的图片的高清大图的下载url

在这里插入图片描述
分析发现每个页面a标签上一级都在class=img的div标签包裹下,那我们就抓取所有的这类div标签,然后在for遍历时在每个div中找到a标签,通过get方法得到其中的href地址。
在这里插入图片描述
我们比对两张大图的url发现都在div class="big-pic"包裹下
在这里插入图片描述
在这里插入图片描述
注意我们得到的href还需要加上访问前缀"https://www.umei.cc/"+href这才组成了完整的下载地址。


代码思路

1.拿到主页面的源代码. 然后提取到子页面的链接地址, href

import requests
from bs4 import BeautifulSoup
import timeurl = "https://www.umei.cc/bizhitupian/weimeibizhi/"
resp = requests.get(url)
resp.encoding = 'utf-8'  # 处理乱码# print(resp.text)
# 把源代码交给bs
main_page = BeautifulSoup(resp.text, "html.parser")
alist = main_page.find_all("div", class_="img")
print(alist)

2.通过href拿到子页面的内容. 从子页面中找到图片的下载地址 img -> src

    href = a.find("a").get('href')  # 直接通过get就可以拿到属性的值# 拿到子页面的源代码child_page_resp = requests.get("https://www.umei.cc/"+href)#组合得到子页面图片地址child_page_resp.encoding = 'utf-8'child_page_text = child_page_resp.text# 从子页面中拿到图片的下载路径child_page = BeautifulSoup(child_page_text, "html.parser")child_page_div = child_page.find("div", class_="big-pic")img = child_page_div.find("img")src = img.get("src")

3.下载图片

    # 下载图片img_resp = requests.get(src)# img_resp.content  # 这里拿到的是字节img_name = src.split("/")[-1]  # 拿到url中的最后一个/以后的内容with open("img/"+img_name, mode="wb") as f:f.write(img_resp.content)  # 图片内容写入文件print("over!!!", img_name)time.sleep(1)#休息延迟

3. 完整实现代码

import requests
from bs4 import BeautifulSoup
import timeurl = "https://www.umei.cc/bizhitupian/weimeibizhi/"
resp = requests.get(url)
resp.encoding = 'utf-8'  # 处理乱码# print(resp.text)
# 把源代码交给bs
main_page = BeautifulSoup(resp.text, "html.parser")
alist = main_page.find_all("div", class_="img")
print(alist)
for a in alist[0:10]:#爬取前面10张如果去掉 [0:10] 就表示爬取当前页面的所有,比较慢,不建议使用。也可能会影响网站的负载href = a.find("a").get('href')  # 直接通过get就可以拿到属性的值# 拿到子页面的源代码child_page_resp = requests.get("https://www.umei.cc/"+href)#组合得到子页面图片地址child_page_resp.encoding = 'utf-8'child_page_text = child_page_resp.text# 从子页面中拿到图片的下载路径child_page = BeautifulSoup(child_page_text, "html.parser")child_page_div = child_page.find("div", class_="big-pic")img = child_page_div.find("img")src = img.get("src")# 下载图片img_resp = requests.get(src)# img_resp.content  # 这里拿到的是字节img_name = src.split("/")[-1]  # 拿到url中的最后一个/以后的内容with open("img/"+img_name, mode="wb") as f:f.write(img_resp.content)  # 图片内容写入文件print("over!!!", img_name)time.sleep(1)#休息延迟print("all over!!!")

爬取结果
在这里插入图片描述
高清大图
在这里插入图片描述


总结

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2023 mzh

Crated:2023-3-1

欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中
『未完待续』


相关文章:

『python爬虫』09. bs4实战之下载精美壁纸(保姆级图文)

目录 爬取思路代码思路1.拿到主页面的源代码. 然后提取到子页面的链接地址, href2.通过href拿到子页面的内容. 从子页面中找到图片的下载地址 img -> src3.下载图片 3. 完整实现代码总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏&…...

【Linux学习】多线程——线程控制 | 线程TCB

🐱作者:一只大喵咪1201 🐱专栏:《Linux学习》 🔥格言:你只管努力,剩下的交给时间! 线程控制 | 线程TCB 🧰线程控制🎴线程创建🎴线程结束&#x1…...

Node 10 接口

接口 简介 接口是什么 接口是 前后端通信的桥梁 简单理解:一个接口就是 服务中的一个路由规则 ,根据请求响应结果 接口的英文单词是 API (Application Program Interface),所以有时也称之为 API 接口 这里的接口指的是『数据接口』&#…...

大型互联网企业大流量高并发电商领域核心项目已上线(完整流程+项目白皮书)

说在前面的话 面对近年来网络的飞速发展,大家已经都习惯了网络购物,从而出现了一些衍生品例如:某宝/某东/拼夕夕等大型网站以及购物APP~ 并且从而导致很多大型互联网企业以及中小厂都需要有完整的项目经验,以及优秀处理超大流量…...

汇编语言学习笔记六

flag 寄存器 CF:进位标志位,产生进位CF1,否则为0 PF:奇偶位,如010101b,则该数的1有3个,则PF0,如果该数的1的个数为偶数,则PF1。0也是偶数 ZF:在相关指令执行后(运算和逻辑指令,传送指…...

多商户商城系统-v2.2.3版本发布

likeshop多商户商城系统-v2.2.3版本发布了!主要更新内容如下 新增 1.用户端退出账号功能 优化 1.平台添加营业执照保存异常问题 2.平台端分销商品优化-只显示参与分销的商品 3.优化订单详情显示营销价格标签 4.平台交易设置增加默认值 5.种草社区评论调整&a…...

科研人必看入门攻略(收藏版)

来源:投稿 作者:小灰灰 编辑:学姐 本文主要以如何做科研,日常内功修炼,常见科研误区,整理日常‘好论文’四个部分做以介绍,方便刚入门的科研者进行很好的规划。 1.如何做科研 1.1 选方向 当我…...

第5章 循环和关系表达式

1. strcmp()//比较字符串数组是否相等| string 可以直接用“”来判断 char word[5] "aaaa"; strcmp(word,"aaab");//相同输出0&#xff0c;不同输出1; 2. 延时函数 #include<ctime>float sec 2.3;long delay sec*CLOCKS_PER_SEC;long start c…...

Scalable Vector Graphics (SVG)中的svg、clipPath、mask元素

Scalable Vector Graphics (SVG)是一种用于描述二维向量图形的XML基础标记语言。使用SVG可以实现丰富的图形效果&#xff0c;而不需要像使用位图那样考虑分辨率和像素密度的问题&#xff0c;可以在不同设备上展示出相同的高质量图像。 在SVG中&#xff0c;除了基本形状如circl…...

Java基础(十五)集合框架

1. 集合框架概述 1.1 生活中的容器 1.2 数组的特点与弊端 一方面&#xff0c;面向对象语言对事物的体现都是以对象的形式&#xff0c;为了方便对多个对象的操作&#xff0c;就要对对象进行存储。另一方面&#xff0c;使用数组存储对象方面具有一些弊端&#xff0c;而Java 集合…...

安装gitea

1、安装包&#xff08;gitea-1.13.1-linux-amd64&#xff09;上传到服务器&#xff0c;并添加执行权限 链接&#xff1a;https://pan.baidu.com/s/1SAxko0RhVmmD21Ev_m5JFg 提取码&#xff1a;ft07 chmod x gitea-1.13.1-linux-amd64 2、执行 ./gitea-1.13.1-linux-amd64 web…...

Java异常处理传递规范总结

java 异常分类 Thorwable类&#xff08;表示可抛出&#xff09;是所有异常和错误的超类&#xff0c;两个直接子类为Error和Exception&#xff0c;分别表示错误和异常。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常&#xff0c; 这两种异常有很大的区别…...

2d俯视视角游戏,可以切换多种枪械

文章目录 一、 介绍二、 人物移动、鼠标控制转向三、子弹脚本四、子弹随机抛壳五、 爆炸特效六、 发射子弹七、 子弹、弹壳对象池八、 散弹枪九、 火箭弹、发射火箭十、 下载工程文件 一、 介绍 2d俯视视角游戏。 人物视角跟随鼠标移动 多种枪械 抛壳效果 多种设计效果 对象池…...

大四的告诫

保研/考研方向就绩点&#xff0c;&#xff08;各种&#xff09;比赛&#xff0c;&#xff08;考研&#xff09;刷题为主 工作就算法&#xff08;比赛&#xff09;&#xff0c;项目&#xff0c;实习为主 &#x1f442; LOCK OUT - $atori Zoom/KALONO - 单曲 - 网易云音乐 &…...

滚珠螺杆在设备上的应用

滚珠螺杆跟直线导轨一样&#xff0c;是很多机械设备上不可或缺的重要部件&#xff0c;它是确保机器能够具备高加工精度的前提条件&#xff0c;因此本身对于精度的要求也相当地高。今天&#xff0c;我们就来了解一下滚珠螺杆在不同设备上的应用吧&#xff01; 1、大型的加工中心…...

Day41线程同步

线程同步 案例&#xff1a;三个窗口卖100张票 //定义一个类SellTicket实现Runnable接口&#xff0c;定义成员变量100张票 public class SellTicket implements Runnable{private int tickets 100;//重写run方法Overridepublic void run(){while (true){ //没有票后&…...

设计模式之享元模式

参考资料 曾探《JavaScript设计模式与开发实践》&#xff1b;「设计模式 JavaScript 描述」享元模式设计模式之享元模式Javascript 设计模式 - 享元模式 定义 享元模式的英文叫&#xff1a;Flyweight Design Pattern。享元设计模式是用于性能优化的模式&#xff0c;这种设计…...

【GAMES101】05 Rasterization(Triangles)

光栅化过程&#xff1a;将一系列变换后的三角形转换为像素的过程。 三角形在图形学中得到很多的应用。 最基础的多边形&#xff08;边数最少&#xff09;。任何多边形都可以拆成三角形。性质&#xff1a;三角形内部一定是平面的。三角形内外部定义非常清楚。定义三个顶点后&a…...

13. Pod 从入门到深入理解(二)

本章讲解知识点 Pod 容器共享 VolumeConfigMapSecretDownward APIEmptyDir VolumeHostPath Volume1. Pod 容器共享 Volume 1.1. Volume 的背景及需要解决的问题 存储是必不可少的,对于服务运行产生的日志、数据,必须有一个地方进行保存,但是我们的容器每一次重启都是“恢复…...

ORBBEC(奥比中光)AstraPro相机在ROS2下的标定与D2C(标定与配准)

文章目录 1.rgb、depth相机标定矫正1.1.标定rgb相机1.2.标定depth相机1.3.rgb、depth相机一起标定&#xff08;效果重复了&#xff0c;但是推荐使用&#xff09;1.4.取得标定结果1.4.1.得到的标定结果的意义 1.5.IR、RGB相机分别应用标定结果1.5.1.openCV应用标定结果1.5.2.ros…...

益达App:5分钟打造你的个性化跨平台媒体中心

益达App&#xff1a;5分钟打造你的个性化跨平台媒体中心 【免费下载链接】yidaRule 益达规则仓库 项目地址: https://gitcode.com/gh_mirrors/yi/yidaRule 在信息爆炸的时代&#xff0c;我们每天都要面对海量的媒体内容——视频、音频、小说、漫画分散在各个平台和网站中…...

从零开始:SpaCy安装与模型下载的完整流程(含版本查询技巧)

从零开始&#xff1a;SpaCy安装与模型下载的完整流程&#xff08;含版本查询技巧&#xff09; 自然语言处理&#xff08;NLP&#xff09;正在改变我们与计算机交互的方式&#xff0c;而SpaCy作为这一领域的明星工具库&#xff0c;以其高效性和易用性赢得了众多开发者的青睐。无…...

低成本搭建AI知识库:Qwen3-Embedding-4B量化版仅需3GB显存教程

低成本搭建AI知识库&#xff1a;Qwen3-Embedding-4B量化版仅需3GB显存教程 1. 引言&#xff1a;为什么选择Qwen3-Embedding-4B&#xff1f; 在构建AI知识库时&#xff0c;文本向量化模型的选择至关重要。传统方案要么性能不足&#xff0c;要么资源消耗过大。Qwen3-Embedding-…...

C++ 静态成员的生命周期管理

C静态成员的生命周期管理是面向对象编程中一个既基础又关键的话题。静态成员作为类的特殊成员&#xff0c;其生命周期与普通成员变量截然不同&#xff0c;理解它们的初始化、销毁时机以及线程安全等问题&#xff0c;对于编写健壮高效的C代码至关重要。本文将深入探讨静态成员的…...

从黑盒到白盒:基于GB28181/RTSP全栈源码交付的AI视频平台OEM与低代码集成实战

引言&#xff1a;掌握核心代码&#xff0c;重塑交付价值链 对于系统集成商&#xff08;SI&#xff09;和独立软件开发商&#xff08;ISV&#xff09;而言&#xff0c;依赖厂商的“黑盒”产品无异于将命运交予他人。功能定制周期长、接口开放受限、Logo无法替换、私有协议无法打…...

嵌入式行业职业发展路径

嵌入式行业职业规划&#xff1a;技术→管理→经营→投资 这个路径代表了嵌入式从业者从执行者到决策者、从专业人才到复合型领袖的典型进阶之路。以下分阶段详解每个层级的核心任务、能力要求及转型关键。第一阶段&#xff1a;技术深耕&#xff08;0-5年&#xff09; 核心定位&…...

工业相机LUCID TRI050S偏振模式实战:从开箱到计算AOP/DOP的保姆级避坑指南

工业相机LUCID TRI050S偏振模式实战&#xff1a;从开箱到计算AOP/DOP的保姆级避坑指南 当你第一次拿到LUCID TRI050S这款工业级偏振相机时&#xff0c;可能会被它小巧的金属机身和复杂的接口配置所震撼。与普通工业相机不同&#xff0c;这款设备在每个像素点前都集成了微型偏振…...

安卓虚拟摄像头:解锁手机摄像头的无限创意可能

安卓虚拟摄像头&#xff1a;解锁手机摄像头的无限创意可能 【免费下载链接】com.example.vcam 虚拟摄像头 virtual camera 项目地址: https://gitcode.com/gh_mirrors/co/com.example.vcam 想要在视频会议中展示精心准备的演示内容&#xff1f;还是希望在直播时使用定制…...

易语言飞将ddddocr识图识字PaddleOCR识图识字苍狼OCR简单识字简化

易语言飞将ddddocr识图识字PaddleOCR识图识字苍狼OCR简单识字简化 超级简单的识图识字模块&#xff0c;简单初始化后即可使用&#xff0c;不用做其它多余的步骤 超级简单&#xff0c;下载即用&#xff0c;特别适合小白使用 下载地址&#xff1a;https://daidijia.lanzoue.com/i…...

Vue项目实战:集成Cesium加载天地图与高德地图的完整指南

1. 环境准备与项目初始化 在开始集成Cesium之前&#xff0c;我们需要先搭建好Vue的开发环境。这里我推荐使用Vue 3的组合式API&#xff0c;因为它的模块化特性与Cesium的集成更加契合。不过Vue 2的用户也不用担心&#xff0c;大部分代码都是兼容的。 首先创建一个新的Vue项目…...