爬虫项目——BS练手(2)
本文爬取目标网址的图片,获取如下区域的图片
前期准备:
工具: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)相关推荐
- 爬虫项目——BS4练手(1)
本文爬取目标网页表格中的内容,提取(品名,最高价,最低价,均价)信息,导入csv文件中 前期准备: 工具:Spyder 引用的库:requests,bs4中的BeautifulSoup,csv 1.获 ...
- 爬虫项目——xpath练手(1)
本文爬取目标网址中的电影名,介绍,及评分 前期准备: 工具:Spyder 引用的库:requests,csv,lxml里的 etree 1.前期基本处理: url = "https://fi ...
- 从入门到入土:Python爬虫学习|实例练手|爬取猫眼榜单|Xpath定位标签爬取|代码
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- 从入门到入土:Python爬虫学习|实例练手|爬取百度翻译|Selenium出击|绕过反爬机制|
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- 从入门到入土:Python爬虫学习|实例练手|爬取新浪新闻搜索指定内容|Xpath定位标签爬取|代码注释详解
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- 从入门到入土:Python爬虫学习|实例练手|爬取百度产品列表|Xpath定位标签爬取|代码注释详解
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- 【源码+教程】Java桌球游戏_Java初级项目_Java练手项目_Java项目实战_Java游戏开发
今天分享的Java开源游戏项目是桌球游戏,初学者也可以用来练习喔~课程详细讲解了一个桌球游戏的编写思路和流程,即使你刚学Java没多久,也可以跟随该教程视频完成属于你自己的桌球游戏!同时,还可以加深和 ...
- 为何别人实操很强?因为他用这70个Python项目学习练手!它值得你收藏落灰!
[此文章转自乐字节] 前言: 不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说大家都知道学编程语言一定要做项目才行. 这里整理了70个Python实战项目列表,都有完整 ...
- 新手python的100个实战项目,python练手经典100例项目
Python 的练手项目有哪些值得推荐? 基础和爬虫.Python由荷兰数学和计算机科学研究学会的Guido van Rossum于1990 年代初设计,作为一门叫做ABC语言的替代品. Python ...
最新文章
- (转)程序员新人怎样在复杂代码中找 bug?
- dlib android
- arduino 读取当前时间_Arm难以撼动,暴露下的Arduino与RISCV联合体就是个笑话
- 秘钥对使用_使用gitactions持续集成项目实例
- 718. 最长重复子数组(JavaScript)
- SAP License:SAP S/4 HANA模块功能介绍
- 可空类型 (C# 编程指南)
- 高中数学学习技巧,这几步你都做到了吗?
- oppo云服务器怎么卸载,oppo手机小布助手卸载方法_oppo手机小布助手怎么卸载-硬件之家...
- 【专升本计算机】经典Office 2003专升本复习题(Word、Excel、PowerPoint)
- uni-app在手机上背景图片不显示
- 知识点 - 后缀数组
- Beyond Part Models: Person Retrieval with Refined Part Pooling 阅读笔记
- 苹果手表Apple Watch 无法检查更新 iOS14.5 14.6 14.7
- 火柴人小程序linux,推荐这3款射击类的火柴人小程序,一起冲冲冲吧!
- HTML5中引入字体样式的常用方法-Iconfont(阿里巴巴矢量图库)和IcoMoon-APP
- 如何利用计算机隐藏文件,如何查找隐藏的计算机文件夹
- 西门子1200plc485轮询读写28个测试仪表,包括plc程序和触摸屏程序,仪表485通讯协议说明书
- opencv学习笔记五:cv2.warpAffine()函数详解
- 小波变换的前因后果(三)
热门文章
- eclipse 构建maven web工程
- 解决启动WebLogic输入用户名密码问题以及密码重置
- Android用户界面开发:控件集合
- 2012-13学年上半学期路由与交换课程设计-作业-2
- 【回文串7】LeetCode 234. Palindrome Linked List
- 通过深度优先搜索(DFS)对图的边进行分类
- 【CS229】多变量线性回归
- [导入]在asp.net中利用FileUplad控件从同一个页面上传多个文件
- 白话之jsonp跨域原理分析
- Retrofit2设置返回类型是字符串(String)类型