python save保存图片到本地_python爬取网站上的图片并保存到本地
1.导入需要的模块requests,BeautifulSoup,os(用于文件读写)。
2.创建一个类,并初始化。
class BeautifulPicture:
def __init__(self): # 类的初始化操作
self.headers = {
# 给请求指定一个请求头来模拟chrome浏览器
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)'
' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
self.web_url = 'url' # 要访问的网页地址
self.folder_path = 'E:\\1\\pic' # 设置图片要存放的文件目录
3.先请求图片所在的网页,返回网页response
def request(self, url): # 返回网页response
r = requests.get(url, self.headers) # 向目标url地址发送get请求,返回一个response对象
return r
调用request方法,print(r.text)就可以看到控制台上print出的网页源码了。
4.通过BeautifulSoup工具获取需要抓取的img标签,这里根据不同的网页布局css选择器也会有不同:
def get_pic(self):
r = self.request(self.web_url)
all_item = BeautifulSoup(r.text, 'html.parser').select(".search_results > .item")
for item in all_item:
img = item.find('a').find('img')
url = img['src']
此处,我是先抓取img所在的div(类名为item),再获取div下的a链接下的img,网页具体代码格式为
......
通过遍历可以获取所有图片的链接。
5.获取到图片地址链接后,就可以下载图片并保存到本地了。那么就需要确认初始化定义的文件夹是否存在,如果不存在,需要创建。
def mkdir(self, path): # 创建文件夹
path = path.strip()
is_exists = os.path.exists(path)
if not is_exists:
print('创建名字叫做', path, '的文件夹')
os.makedirs(path)
print('创建成功!')
else:
print(path, '文件夹已经存在了,不再创建')
6.接下来就可以保存图片了。
第四步操作,在get_pic方法中,获取到所有图片所在的div标签后,先确保存放图片的文件下是否存在,调用方法
self.mkdir(self.folder_path) # 创建文件夹
os.chdir(self.folder_path) # 切换路径至上面创建的文件夹
遍历所有的div,根据url名中jpg/png的不同,决定保存图片的后缀名
i = 1 # 后面用来给图片命名
for item in all_item:
img = item.find('a').find('img')
url = img['src']
if url.count('jpg') > 0:
self.save_img(url, str(i) + '.jpg')
elif url.count('png') > 0:
self.save_img(url, str(i) + '.png')
i += 1
其中save_img方法为:
def save_img(self, url, name): # 保存图片
img = self.request(url)
f = open(name, 'ab')
f.write(img.content)
print(name, '文件保存成功!')
f.close()
创建MyBeautifulPicture类的实例,调用get_pic方法,至此,保存图片到本地就可以实现了。
完整的get_pic方法为:
def get_pic(self):
r = self.request(self.web_url)
all_item = BeautifulSoup(r.text, 'html.parser').select(".search_results > .item")
self.mkdir(self.folder_path) # 创建文件夹
os.chdir(self.folder_path) # 切换路径至上面创建的文件夹
i = 1 # 后面用来给图片命名
for item in all_item:
img = item.find('a').find('img')
url = img['src']
# print(url)
if url.count('jpg') > 0:
self.save_img(url, str(i) + '.jpg')
elif url.count('png') > 0:
self.save_img(url, str(i) + '.png')
i += 1
python save保存图片到本地_python爬取网站上的图片并保存到本地相关推荐
- python爬取音乐并保存的格式_python爬取QQ音乐歌单歌曲保存到本地,json解析
序:python强大的功能,可以爬取网上的某些信息,本次主要是通过爬歌单信息熟悉下python基础. 用到知识点: 1.python3.urllib.request.openurl 2.json (j ...
- python爬取音乐并保存_python爬取QQ音乐歌单歌曲保存到本地,json解析
序:python强大的功能,可以爬取网上的某些信息,本次主要是通过爬歌单信息熟悉下python基础. 用到知识点: 1.python3.urllib.request.openurl 2.json (j ...
- 爬虫——爬取网站上的图片
1. 利用python request库爬取网站图片 爬取网站:http://www.pes-stars.co.ua/?page1/ 进入网站后,按F12,打开开发者模式,[元素],通过鼠标移动的方式 ...
- Python爬虫实战之一 - 基于Requests爬取拉勾网招聘信息,并保存至本地csv文件
Python爬虫实战之二 - 基于Requests抓取拉勾网招聘信息 ---------------readme--------------- 简介:本人产品汪一枚,Python自学数月,对于小白,本 ...
- python下载图片怎么保存_Python抓取站酷作品图片并保存至本地
思路 1.通过 requests 模块请求网页,获取到网页的源码,其中包含了作品集的 URL 2.通过 BeautifulSoup 提取到作品集的 URL ,返回为列表,使用 for 循环遍历作品集 ...
- 【requests库】爬取Pixiv日榜图片 并保存到本地
本来计划用BeautifulSoup,但是电脑上的chrome版本不能给网页源代码换行,标签找得让人头大,就改用requests了. 所需库:requests.re 代码如下: import requ ...
- python爬虫实战(一)--爬取知乎话题图片
原文链接python爬虫实战(一)–爬取知乎话题图片 前言 在学习了python基础之后,该尝试用python做一些有趣的事情了–爬虫. 知识准备: 1.python基础知识 2.urllib库使用 ...
- Python爬虫利用18行代码爬取虎牙上百张小姐姐图片
Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...
- python如何爬取网页视频_快就完事了!10分钟用python爬取网站视频和图片
原标题:快就完事了!10分钟用python爬取网站视频和图片 话不多说,直接开讲!教你如何用Python爬虫爬取各大网站视频和图片. 638855753 网站分析: 我们点视频按钮,可以看到的链接是: ...
最新文章
- SpringtMVC中配置 mvc:annotation-driven/ 与 mvc:default-servlet-handler/ 的作用
- 微信小程序 wx:key 提示-解决
- groovy怎样从sql语句中截取表名_SQL基础教程学习笔记
- [FxCop.设计规则]13. 定义自定义属性参数的访问属性
- 链表(Linked List)之环形链表
- mysql 常用命令的使用_MySQL基本命令
- mysql info commit_mysql show processlist 发现大量的commit
- golang mysql scan_golang 实现 mysql 数据库备份
- Ext.tree.Panel示例
- 如何在数据源是空的时候,gridview显示表头(万能)
- 【Computer Organization笔记24】光盘,FLASH MEMORY,本单元总结
- 不要网上乱拷贝代码了!一段网上找的代码把公司服务器崩了!
- 黑马day11 脏读数据amp;解
- 华为手机遮挡html页面,手机知识:华为手机老是显示屏幕被遮挡
- miui 谷歌框架_小米1MIUI开发版可用的google服务框架
- ubuntu邮件服务器,Ubuntu下搭建mail邮件服务器的方法教程
- 基于注意力机制的多尺度车辆行人检测算法
- c语言中windows.h是什么意思,c语言中memory.h有什么作用
- 2020中国人工智能产业链企业图谱(名单)
- 多说高级应用-添加 UA 浏览器标识、旋转头像等
热门文章
- Android强指针sp和弱指针wp区别
- Android 打开蓝牙流程
- 深度学习自学(三十四):换衣场景下行人重识别
- 深度学习自学(二十二):人脸检测人脸识别-嵌入式平台方案汇总
- linux软连接目标不存在,Linux ln创建软连接之后无法使用,无法whereis
- as安装过程中gradle_电磁阀在安装过程中需注意的一些细节
- shell linux中shell脚本编写俄罗斯方块
- 怎么在html中加横条,如何在HTML中插入一行?html横线标签hr全新讲解
- linux rewind函数,C语言rewind()函数:将文件指针重新指向文件开头
- lisp语言cond和if套用_AutoCAD LISP 循环选择语句cond