当前位置: 首页 > 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爬虫』 专栏,持续更新中
『未完待续』


http://www.lryc.cn/news/65314.html

相关文章:

  • 【Linux学习】多线程——线程控制 | 线程TCB
  • Node 10 接口
  • 大型互联网企业大流量高并发电商领域核心项目已上线(完整流程+项目白皮书)
  • 汇编语言学习笔记六
  • 多商户商城系统-v2.2.3版本发布
  • 科研人必看入门攻略(收藏版)
  • 第5章 循环和关系表达式
  • Scalable Vector Graphics (SVG)中的svg、clipPath、mask元素
  • Java基础(十五)集合框架
  • 安装gitea
  • Java异常处理传递规范总结
  • 2d俯视视角游戏,可以切换多种枪械
  • 大四的告诫
  • 滚珠螺杆在设备上的应用
  • Day41线程同步
  • 设计模式之享元模式
  • 【GAMES101】05 Rasterization(Triangles)
  • 13. Pod 从入门到深入理解(二)
  • ORBBEC(奥比中光)AstraPro相机在ROS2下的标定与D2C(标定与配准)
  • 常量与变量:编程中重要的两种数据类型
  • ( 数组和矩阵) 287. 寻找重复数 ——【Leetcode每日一题】
  • 【学习笔记】「JOISC 2022 Day2」复制粘贴 3
  • 武忠祥老师每日一题||定积分基础训练(三)
  • Docker安装常用软件-Apollo(有问题)
  • f(x)与|f(x)|,f ‘ (x),F(x)常见关系。
  • 今天面了一个来字节要求月薪23K,明显感觉他背了很多面试题...
  • 如何使用二元三次回归分析建立预测模型?(分析、原理、代码示例)
  • 面向万物智联的应用框架的思考和探索(上)
  • 《Python机器学习基础教程》第1章学习笔记
  • ClickHouse 内存管理是如何实现的