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爬取网站上的图片并保存到本地相关推荐

  1. python爬取音乐并保存的格式_python爬取QQ音乐歌单歌曲保存到本地,json解析

    序:python强大的功能,可以爬取网上的某些信息,本次主要是通过爬歌单信息熟悉下python基础. 用到知识点: 1.python3.urllib.request.openurl 2.json (j ...

  2. python爬取音乐并保存_python爬取QQ音乐歌单歌曲保存到本地,json解析

    序:python强大的功能,可以爬取网上的某些信息,本次主要是通过爬歌单信息熟悉下python基础. 用到知识点: 1.python3.urllib.request.openurl 2.json (j ...

  3. 爬虫——爬取网站上的图片

    1. 利用python request库爬取网站图片 爬取网站:http://www.pes-stars.co.ua/?page1/ 进入网站后,按F12,打开开发者模式,[元素],通过鼠标移动的方式 ...

  4. Python爬虫实战之一 - 基于Requests爬取拉勾网招聘信息,并保存至本地csv文件

    Python爬虫实战之二 - 基于Requests抓取拉勾网招聘信息 ---------------readme--------------- 简介:本人产品汪一枚,Python自学数月,对于小白,本 ...

  5. python下载图片怎么保存_Python抓取站酷作品图片并保存至本地

    思路 1.通过 requests 模块请求网页,获取到网页的源码,其中包含了作品集的 URL 2.通过 BeautifulSoup 提取到作品集的 URL ,返回为列表,使用 for 循环遍历作品集 ...

  6. 【requests库】爬取Pixiv日榜图片 并保存到本地

    本来计划用BeautifulSoup,但是电脑上的chrome版本不能给网页源代码换行,标签找得让人头大,就改用requests了. 所需库:requests.re 代码如下: import requ ...

  7. python爬虫实战(一)--爬取知乎话题图片

    原文链接python爬虫实战(一)–爬取知乎话题图片 前言 在学习了python基础之后,该尝试用python做一些有趣的事情了–爬虫. 知识准备: 1.python基础知识 2.urllib库使用 ...

  8. Python爬虫利用18行代码爬取虎牙上百张小姐姐图片

    Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...

  9. python如何爬取网页视频_快就完事了!10分钟用python爬取网站视频和图片

    原标题:快就完事了!10分钟用python爬取网站视频和图片 话不多说,直接开讲!教你如何用Python爬虫爬取各大网站视频和图片. 638855753 网站分析: 我们点视频按钮,可以看到的链接是: ...

最新文章

  1. SpringtMVC中配置 mvc:annotation-driven/ 与 mvc:default-servlet-handler/ 的作用
  2. 微信小程序 wx:key 提示-解决
  3. groovy怎样从sql语句中截取表名_SQL基础教程学习笔记
  4. [FxCop.设计规则]13. 定义自定义属性参数的访问属性
  5. 链表(Linked List)之环形链表
  6. mysql 常用命令的使用_MySQL基本命令
  7. mysql info commit_mysql show processlist 发现大量的commit
  8. golang mysql scan_golang 实现 mysql 数据库备份
  9. Ext.tree.Panel示例
  10. 如何在数据源是空的时候,gridview显示表头(万能)
  11. 【Computer Organization笔记24】光盘,FLASH MEMORY,本单元总结
  12. 不要网上乱拷贝代码了!一段网上找的代码把公司服务器崩了!
  13. 黑马day11 脏读数据amp;解
  14. 华为手机遮挡html页面,手机知识:华为手机老是显示屏幕被遮挡
  15. miui 谷歌框架_小米1MIUI开发版可用的google服务框架
  16. ubuntu邮件服务器,Ubuntu下搭建mail邮件服务器的方法教程
  17. 基于注意力机制的多尺度车辆行人检测算法
  18. c语言中windows.h是什么意思,c语言中memory.h有什么作用
  19. 2020中国人工智能产业链企业图谱(名单)
  20. 多说高级应用-添加 UA 浏览器标识、旋转头像等

热门文章

  1. Android强指针sp和弱指针wp区别
  2. Android 打开蓝牙流程
  3. 深度学习自学(三十四):换衣场景下行人重识别
  4. 深度学习自学(二十二):人脸检测人脸识别-嵌入式平台方案汇总
  5. linux软连接目标不存在,Linux ln创建软连接之后无法使用,无法whereis
  6. as安装过程中gradle_电磁阀在安装过程中需注意的一些细节
  7. shell linux中shell脚本编写俄罗斯方块
  8. 怎么在html中加横条,如何在HTML中插入一行?html横线标签hr全新讲解
  9. linux rewind函数,C语言rewind()函数:将文件指针重新指向文件开头
  10. lisp语言cond和if套用_AutoCAD LISP 循环选择语句cond