Python爬取网站图片并保存的实现示例


Posted in Python onFebruary 26, 2021

先看看结果吧,去bilibili上拿到的图片=-=

Python爬取网站图片并保存的实现示例

第一步,导入模块

import requests
from bs4 import BeautifulSoup

requests用来请求html页面,BeautifulSoup用来解析html

第二步,获取目标html页面

hd = {'user-agent': 'chrome/10'} # 伪装自己是个(chrome)浏览器=-=

def download_all_html():
  try:
    url = 'https://www.bilibili.com/' # 将要爬取网站的地址
    request = requests.get(url, timeout=30, headers=hd) # 获取改网站的信息
    request.raise_for_status() # 判断状态码是否为200,!=200显然爬取失败
    request.encoding = request.apparent_encoding # 设置编码格式
    return request.text # 返回html页面
  except:
    return ''

第三步,分析网站html构造

1、显示网站html代码

Python爬取网站图片并保存的实现示例

2、找到图片位置

Python爬取网站图片并保存的实现示例

3、分析

Python爬取网站图片并保存的实现示例

Python爬取网站图片并保存的实现示例

第四步,直接上代码注释够详细=-=

def parse_single_html(html):
  soup = BeautifulSoup(html, 'html.parser') # 解析html,可以单独去了解一下他的使用
  divs = soup.find_all('div', class_='card-pic') # 获取满足条件的div,find_all(所有)
  for div in divs: # 瞒住条件的div有多个,我们单独获取
    p = div.find('p') # 有源代码可知,每个div下都有一个p标签,存储图片的title,获取p标签
    if p == None:
      continue
    title = p['title'] # 获取p标签中的title属性,用来做图片的名称
    img = div.find('img')['src'] # 获取图片的地址
    if img[0:6] != 'https:': # 根据源代码发现,有的地址缺少"https:"前缀
      img = 'https:' + img # 如果缺少,我们给他添上就行啦,都据情况而定
    response = requests.get(img) # get方法得到图片地址(有的是post、put)基本是get
    with open('./Img/{}.png'.format(title), 'wb') as f: # 创建用来保存图片的.png文件
      f.write(response.content) # 注意,'wb'中的b 必不可少!!


parse_single_html(download_all_html()) # 最后调用我们写的两个函数就行啦,

Python爬取网站图片并保存的实现示例

查看结果

Python爬取网站图片并保存的实现示例

到此这篇关于Python爬取网站图片并保存的实现示例的文章就介绍到这了,更多相关Python爬取图片保存内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现监控windows服务并自动启动服务示例
Apr 17 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
May 02 Python
python使用matplotlib绘制热图
Nov 07 Python
Python脚本修改阿里云的访问控制列表的方法
Mar 08 Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 Python
selenium+PhantomJS爬取豆瓣读书
Aug 26 Python
Pytoch之torchvision.transforms图像变换实例
Dec 30 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
快速解决jupyter启动卡死的问题
Apr 10 Python
python 8种必备的gui库
Aug 27 Python
python pymysql库的常用操作
Oct 16 Python
python中使用asyncio实现异步IO实例分析
Feb 26 #Python
浅析Python模块之间的相互引用问题
Feb 26 #Python
python实现学生通讯录管理系统
Feb 25 #Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 #Python
python实现不同数据库间数据同步功能
Feb 25 #Python
使用python实现学生信息管理系统
Feb 25 #Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
Feb 25 #Python
You might like
php 修改zen-cart下单和付款流程以防止漏单
2010/03/08 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
jquery插件制作简单示例说明
2012/02/03 Javascript
关于JavaScript中string 的replace
2013/04/12 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
Underscore源码分析
2015/12/30 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
Node.js之网络通讯模块实现浅析
2017/04/01 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
Angular排序实例详解
2017/06/28 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
2019/06/19 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
vue实现下载文件流完整前后端代码
2020/11/17 Vue.js
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Python 深入理解yield
2008/09/06 Python
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
python解析xml简单示例
2019/06/21 Python
python调用其他文件函数或类的示例
2019/07/16 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
外语系毕业生求职自荐信
2014/04/12 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
环保倡议书400字
2014/05/15 职场文书
2015年元旦演讲稿
2014/09/12 职场文书
白酒代理协议书范本
2014/10/26 职场文书
2014年保险业务员工作总结
2014/12/23 职场文书
大学生实习推荐信
2015/03/27 职场文书
班主任寄语2016
2015/12/04 职场文书
听课评课活动心得体会
2016/01/15 职场文书
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技