本文爬取目标网址的图片,获取如下区域的图片

前期准备:
工具:Spyder
引用的库:requests,bs4中的BeautifulSoup

1.获取目标网址信息

url = "https://www.youmeitu.com/"
resp = requests.get(url)
resp.encoding = 'utf-8'  #设定编码格式

2.解析数据,将页面源代码交给BeautifulSoup进行处理,生成bs对象

main_page = BeautifulSoup(resp.text,"html.parser")

3.定位寻找目标信息

alist = main_page.find("div",attrs={"class":"IndexListUnion_2"}).find_all("a")

这里的意识是寻找<div模块中,class属性值为IndexListUnion_2>的,后面的find_all(a),则是找每个<a>的标签的内容
4.通过<a>标签的内容,跳转到子页面中下载图片
这里需要注意,需要加上头部的链接,
即,子链接 = 头部链接+子页面的<a>中的href的值

for a in alist:href = url+a.get('href').strip("/")# 拿到子页面的源代码child_page_resp = requests.get(href)child_page_resp.encoding = 'utf-8'child_page_text = child_page_resp.text# 从子页面中拿到图片的下载路径child_page = BeautifulSoup(child_page_text,"html.parser")div = child_page.find("div",attrs={"class":"ImageBody"})img = div.find("img")src = img.get("src")# 下载图片img_resp = requests.get(url+src.strip("/"))img_name = src.split("/")[-1]with open("img/"+img_name,mode="wb") as f:f.write(img_resp.content) # 将图片内容写入文件print("over!!!",img_name)
  • href = url+a.get(‘href’).strip("/"):分别得到每个子页面的完整链接
  • child_page_resp = requests.get(href):拿到子页面的源代码
  • child_page_resp_encoding = ‘utf-8’:设置编码格式,防止乱码
  • child_page_text = child_page_resp.text:设置成文本格式
child_page = BeautifulSoup(child_page_text,"html.parser")
div = child_page.find("div",attrs={"class":"ImageBody"})
img = div.find("img")
src = img.get("src")

对其,进行bs解析,进行合理的定位

5. 图片的下载
获取图片的地址信息

img_resp = requests.get(url+src.strip("/"))

确定图片的名字,使用切片

img_name = src.split("/")[-1]

保存到img文件夹下

    with open("img/"+img_name,mode="wb") as f:f.write(img_resp.content) # 将图片内容写入文件print("over!!!",img_name)

完整代码如下:

# -*- coding: utf-8 -*-
"""
Created on Sun Oct  3 12:14:05 2021@author: yingziE-mail:guotaomath@163.com
"""
import requests
from bs4 import BeautifulSoup
import timeurl = "https://www.youmeitu.com/"
resp = requests.get(url)
resp.encoding = 'utf-8'# 将源代码交给BS
main_page = BeautifulSoup(resp.text,"html.parser")
alist = main_page.find("div",attrs={"class":"IndexListUnion_2"}).find_all("a")for a in alist:href = url+a.get('href').strip("/")# 拿到子页面的源代码child_page_resp = requests.get(href)child_page_resp.encoding = 'utf-8'child_page_text = child_page_resp.text# 从子页面中拿到图片的下载路径child_page = BeautifulSoup(child_page_text,"html.parser")div = child_page.find("div",attrs={"class":"ImageBody"})img = div.find("img")src = img.get("src")# 下载图片img_resp = requests.get(url+src.strip("/"))img_name = src.split("/")[-1]with open("img/"+img_name,mode="wb") as f:f.write(img_resp.content) # 将图片内容写入文件print("over!!!",img_name)time.sleep(1)print("all over!!!")

爬虫项目——BS练手(2)相关推荐

  1. 爬虫项目——BS4练手(1)

    本文爬取目标网页表格中的内容,提取(品名,最高价,最低价,均价)信息,导入csv文件中 前期准备: 工具:Spyder 引用的库:requests,bs4中的BeautifulSoup,csv 1.获 ...

  2. 爬虫项目——xpath练手(1)

    本文爬取目标网址中的电影名,介绍,及评分 前期准备: 工具:Spyder 引用的库:requests,csv,lxml里的 etree 1.前期基本处理: url = "https://fi ...

  3. 从入门到入土:Python爬虫学习|实例练手|爬取猫眼榜单|Xpath定位标签爬取|代码

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  4. 从入门到入土:Python爬虫学习|实例练手|爬取百度翻译|Selenium出击|绕过反爬机制|

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  5. 从入门到入土:Python爬虫学习|实例练手|爬取新浪新闻搜索指定内容|Xpath定位标签爬取|代码注释详解

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  6. 从入门到入土:Python爬虫学习|实例练手|爬取百度产品列表|Xpath定位标签爬取|代码注释详解

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  7. 【源码+教程】Java桌球游戏_Java初级项目_Java练手项目_Java项目实战_Java游戏开发

    今天分享的Java开源游戏项目是桌球游戏,初学者也可以用来练习喔~课程详细讲解了一个桌球游戏的编写思路和流程,即使你刚学Java没多久,也可以跟随该教程视频完成属于你自己的桌球游戏!同时,还可以加深和 ...

  8. 为何别人实操很强?因为他用这70个Python项目学习练手!它值得你收藏落灰!

    [此文章转自乐字节] 前言: 不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说大家都知道学编程语言一定要做项目才行. 这里整理了70个Python实战项目列表,都有完整 ...

  9. 新手python的100个实战项目,python练手经典100例项目

    Python 的练手项目有哪些值得推荐? 基础和爬虫.Python由荷兰数学和计算机科学研究学会的Guido van Rossum于1990 年代初设计,作为一门叫做ABC语言的替代品. Python ...

最新文章

  1. (转)程序员新人怎样在复杂代码中找 bug?
  2. dlib android
  3. arduino 读取当前时间_Arm难以撼动,暴露下的Arduino与RISCV联合体就是个笑话
  4. 秘钥对使用_使用gitactions持续集成项目实例
  5. 718. 最长重复子数组(JavaScript)
  6. SAP License:SAP S/4 HANA模块功能介绍
  7. 可空类型 (C# 编程指南)
  8. 高中数学学习技巧,这几步你都做到了吗?
  9. oppo云服务器怎么卸载,oppo手机小布助手卸载方法_oppo手机小布助手怎么卸载-硬件之家...
  10. 【专升本计算机】经典Office 2003专升本复习题(Word、Excel、PowerPoint)
  11. uni-app在手机上背景图片不显示
  12. 知识点 - 后缀数组
  13. Beyond Part Models: Person Retrieval with Refined Part Pooling 阅读笔记
  14. 苹果手表Apple Watch 无法检查更新 iOS14.5 14.6 14.7
  15. 火柴人小程序linux,推荐这3款射击类的火柴人小程序,一起冲冲冲吧!
  16. HTML5中引入字体样式的常用方法-Iconfont(阿里巴巴矢量图库)和IcoMoon-APP
  17. 如何利用计算机隐藏文件,如何查找隐藏的计算机文件夹
  18. 西门子1200plc485轮询读写28个测试仪表,包括plc程序和触摸屏程序,仪表485通讯协议说明书
  19. opencv学习笔记五:cv2.warpAffine()函数详解
  20. 小波变换的前因后果(三)

热门文章

  1. eclipse 构建maven web工程
  2. 解决启动WebLogic输入用户名密码问题以及密码重置
  3. Android用户界面开发:控件集合
  4. 2012-13学年上半学期路由与交换课程设计-作业-2
  5. 【回文串7】LeetCode 234. Palindrome Linked List
  6. 通过深度优先搜索(DFS)对图的边进行分类
  7. 【CS229】多变量线性回归
  8. [导入]在asp.net中利用FileUplad控件从同一个页面上传多个文件
  9. 白话之jsonp跨域原理分析
  10. Retrofit2设置返回类型是字符串(String)类型