思路:

1、图片放在<image>XXX</image>标签中

2、利用fiddler抓包获取存放图片信息的js文件url

3、利用requests库获取html内容,然后获取其中图片id

4、利用fiddler抓取下载图片地址,结合图片id来下载图片(大文件)

  1. # -*- coding:UTF-8 -*-
  2. import requests, json, time
  3. from contextlib import closing
  4.  
  5. class get_photos(object):
  6.  
  7. def __init__(self):
  8. self.photos_id = []
  9. self.download_server = 'https://unsplash.com/photos/xxx/download?force=trues'#下载图片地址,通过fiddler抓包获取
  10. self.target = 'https://unsplash.com/napi/photos?page=1&per_page=24'#存有图片信息的js文件地址
  11. self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}
  12.  
  13. """
  14. 函数说明:获取图片ID
  15. """
  16. def get_ids(self):
  17. req = requests.get(url=self.target, headers=self.headers, verify=False)
  18. html = json.loads(req.text)
  19. print(type(html), len(html))
  20. for i in range(len(html)):
  21. self.photos_id.append(html[i]['id'])#将列表html中获取id放到列表photos_id
  22. print(self.photos_id)
  23. time.sleep(1)
  24.  
  25. """
  26. 函数说明:图片下载
  27. """
  28. def download(self, photo_id, filename):
  29. self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}
  30. self.target = self.download_server.replace('xxx', photo_id)#将xxx换成图片id
  31. #closing可以将任意对象转成上下文对象
  32. with closing(requests.get(url=self.target, stream=True, verify = False, headers = self.headers)) as r:
  33. with open('%d.jpg' % filename, 'ab+') as f:
  34. #下载大文件,r.iter_content表示获取响应原始内容
  35. for chunk in r.iter_content(chunk_size = 1024):#边下载边存硬盘,chunk_size表示以1024比例存数据
  36. if chunk:
  37. f.write(chunk)
  38. f.flush()#强行把缓冲区中的内容放到磁盘中
  39.  
  40. if __name__ == '__main__':
  41. gp = get_photos()#类实例化
  42. print('获取图片连接中:')
  43. gp.get_ids()#获取图片id
  44. print('图片下载中:')
  45. for i in range(len(gp.photos_id)):
  46. print('正在下载第%d张图片' % (i+1))
  47. gp.download(gp.photos_id[i], (i+1))

  

python3爬取动态网站图片的更多相关文章

  1. python3 urllib爬取wallhalla网站图片

    点我去我的github上看源码 简单使用静态方法爬取https://wallhalla.com/网站的图片 参考: https://blog.csdn.net/cquptcmj/article/det ...

  2. Java爬虫实践--爬取CSDN网站图片为例

    实现的效果,自动在工程下创建Pictures文件夹,根据网站URL爬取图片,层层获取.在Pictures下以网站的层级URL命名文件夹,用来装该层URL下的图片.同时将文件名,路径,URL插入数据库, ...

  3. python3爬取全站美眉图片

    爬取网站:https://www.169tp.com/xingganmeinv 该网站美眉图片有数百页,每页24张,共上万张图片,全部爬取下来 import urllib.request import ...

  4. 【每周小项目】使用 puppeteer 插件爬取动态网站

    目录 0. 前言 问题 解决 1. 下载与引包 2. 使用步骤 3. 爬过的几个坑 page.evaluate 的传参问题 元素操作问题 0. 前言 这两天对爬虫开始感兴趣,最开始是源于天涯的一个房价 ...

  5. Python3爬取美女妹子图片转载

    # -*- coding: utf-8 -*- """ Created on Sun Dec 30 15:38:25 2018 @author: 球球 "&qu ...

  6. 使用nodejs+http(s)+events+cheerio+iconv-lite爬取2717网站图片数据到本地文件夹

    源代码如下:   //(node:9240) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' ...

  7. 实战爬取某网站图片-Python

    直接上代码 1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 from bs4 import BeautifulSoup 4 import request ...

  8. Scrapy 爬取某网站图片

    1. 创建一个 Scrapy 项目,在命令行或者 Pycharm 的 Terminal 中输入: scrapy startproject imagepix 自动生成了下列文件: 2. 在 imagep ...

  9. python爬虫-基础入门-爬取整个网站《3》

    python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python ...

随机推荐

  1. hdu 2553 八皇后问题 基础

    题意:给你一个n*n的棋盘,要求放n个皇后: <span style="font-size:18px;">#include <iostream> #incl ...

  2. sklearn pca降维

    PCA降维 一.原理 这篇文章总结的不错PCA的数学原理. PCA主成分分析是将原始数据以线性形式映射到维度互不相关的子空间.主要就是寻找方差最大的不相关维度.数据的最大方差给出了数据的最重要信息. ...

  3. hash索引

    hash算法 哈希表(hash table ,也叫散列表),是根据关键码值(key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个 ...

  4. 分布式-信息方式-ActiveMQ基础

    ActiveMQ简介 ActiveMQ是什么ActiveMQ是Apache推出的,一款开源全支持JMS.1和J2EE1.4范的JMS Provider实现的信息中间件.(message oriente ...

  5. plsql developer连接数据库时出现ORA-01033错误的解决方法

    1.首先以管理员的身份登录本地数据库:sqlplus "/as sysdba"如下图:        2.卸载数据: shutdown normal          3. 重新装 ...

  6. 构建基于Electron开发的软件遇到的问题

    构建pdman时,报了好些错. 主要还是网络问题和版本不一致导致的. 前提 npm设置淘宝源,自行搜索. 版本 上面是官方要求的node环境. 需要首先安装nvm, brew install nvm ...

  7. Scala学习(一)——基础语法

    Scala语言是一种面向对象语言,结合了命令式(imperative)和函数式(functional)编程风格,其设计理念是创造一种更好地支持组件的语言. 特性 多范式(Multi-Paradigm) ...

  8. 搜狗输入法弹窗搜狐新闻的处理 以及sogoucloud.exe的处理

    https://www.cnblogs.com/Asa-Zhu/p/3359034.html 使用everything搜索SohuNews.exe,然后找到安装路径C:\Program Files ( ...

  9. Macpro搭建java自动化(selenium+chrome)

    准备工作: 1.下载安装eclipse,并安装培训jdk软件及环境变量: 2.下载selenium,系工具包: http://seleniumhq.org/download/ selenium-ser ...

  10. 如何在form组件中添加一个单选或者多选的字段

    解决办法: 需要在增加的类里面加入choices   具体操作如下: