python3爬取动态网站图片
思路:
1、图片放在<image>XXX</image>标签中
2、利用fiddler抓包获取存放图片信息的js文件url
3、利用requests库获取html内容,然后获取其中图片id
4、利用fiddler抓取下载图片地址,结合图片id来下载图片(大文件)
# -*- coding:UTF-8 -*-
import requests, json, time
from contextlib import closing class get_photos(object): def __init__(self):
self.photos_id = []
self.download_server = 'https://unsplash.com/photos/xxx/download?force=trues'#下载图片地址,通过fiddler抓包获取
self.target = 'https://unsplash.com/napi/photos?page=1&per_page=24'#存有图片信息的js文件地址
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'} """
函数说明:获取图片ID
"""
def get_ids(self):
req = requests.get(url=self.target, headers=self.headers, verify=False)
html = json.loads(req.text)
print(type(html), len(html))
for i in range(len(html)):
self.photos_id.append(html[i]['id'])#将列表html中获取id放到列表photos_id中
print(self.photos_id)
time.sleep(1) """
函数说明:图片下载
"""
def download(self, photo_id, filename):
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'}
self.target = self.download_server.replace('xxx', photo_id)#将xxx换成图片id
#closing可以将任意对象转成上下文对象
with closing(requests.get(url=self.target, stream=True, verify = False, headers = self.headers)) as r:
with open('%d.jpg' % filename, 'ab+') as f:
#下载大文件,r.iter_content表示获取响应原始内容
for chunk in r.iter_content(chunk_size = 1024):#边下载边存硬盘,chunk_size表示以1024比例存数据
if chunk:
f.write(chunk)
f.flush()#强行把缓冲区中的内容放到磁盘中 if __name__ == '__main__':
gp = get_photos()#类实例化
print('获取图片连接中:')
gp.get_ids()#获取图片id
print('图片下载中:')
for i in range(len(gp.photos_id)):
print('正在下载第%d张图片' % (i+1))
gp.download(gp.photos_id[i], (i+1))
python3爬取动态网站图片的更多相关文章
- python3 urllib爬取wallhalla网站图片
点我去我的github上看源码 简单使用静态方法爬取https://wallhalla.com/网站的图片 参考: https://blog.csdn.net/cquptcmj/article/det ...
- Java爬虫实践--爬取CSDN网站图片为例
实现的效果,自动在工程下创建Pictures文件夹,根据网站URL爬取图片,层层获取.在Pictures下以网站的层级URL命名文件夹,用来装该层URL下的图片.同时将文件名,路径,URL插入数据库, ...
- python3爬取全站美眉图片
爬取网站:https://www.169tp.com/xingganmeinv 该网站美眉图片有数百页,每页24张,共上万张图片,全部爬取下来 import urllib.request import ...
- 【每周小项目】使用 puppeteer 插件爬取动态网站
目录 0. 前言 问题 解决 1. 下载与引包 2. 使用步骤 3. 爬过的几个坑 page.evaluate 的传参问题 元素操作问题 0. 前言 这两天对爬虫开始感兴趣,最开始是源于天涯的一个房价 ...
- Python3爬取美女妹子图片转载
# -*- coding: utf-8 -*- """ Created on Sun Dec 30 15:38:25 2018 @author: 球球 "&qu ...
- 使用nodejs+http(s)+events+cheerio+iconv-lite爬取2717网站图片数据到本地文件夹
源代码如下: //(node:9240) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' ...
- 实战爬取某网站图片-Python
直接上代码 1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 from bs4 import BeautifulSoup 4 import request ...
- Scrapy 爬取某网站图片
1. 创建一个 Scrapy 项目,在命令行或者 Pycharm 的 Terminal 中输入: scrapy startproject imagepix 自动生成了下列文件: 2. 在 imagep ...
- python爬虫-基础入门-爬取整个网站《3》
python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python ...
随机推荐
- eclipse中设置tab为4个空格
1.insert space for tabs前打勾 2.General settings中选择Spaces only 3.搞定
- 第六周学习总结&java实验报告四
第六周学习总结&java实验报告四 学习总结: 上一周因为接近国庆假期,所以老师没有讲太多的新知识点,只要是带我们一起做了一个动物模拟变声器的实验,进一步了解和学习到继承的 有关知识点和应用: ...
- 六、smarty-缓存控制前的页面静态化原理
页面静态化可以实现优化服务,对大流量访问网站非常至关重要 为什么页面静态化, 1. 不去执行数据库连接 2. 不去执行SQL语句 设置按时间更新, 1. 按时间更新,如果缓存文件设置1小时 如下 ...
- MethodChannel 实现flutter 与 原生通信
Flutter 步骤 目的:在flutter页面中主动调用原生页面中的方法. 1 在widget中,定义MethodChannel变量 static const MethodChannel metho ...
- leetcode 658找到k个最接近的元素
class Solution { public: vector<int> findClosestElements(vector<int>& arr, int k, in ...
- Linux-Ubuntu文件权限
文件权限 文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作. Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限 ...
- JavaEE-实验四 HTML与JSP基础编程
1.使用HTML的表单以及表格标签,完成以下的注册界面(验证码不做) html代码(css写于其中) <!DOCTYPE html> <html> <head> & ...
- nodejs之express静态路由、ejs
1.静态路由与ejs使用 /** *1.安装ejs npm install ejs --save-dev * *2.express 里面使用ejs ,安装以后就可以用,不需要引入 * *3.配置exp ...
- 转载-Mysql主主复制架构配置
Mysql主主复制架构配置 转载:原始出处 http://luoweiro.blog.51cto.com/2186161/658550MySQL主主复制结构区别于主从复制结构.在主主复制结构中,两台服 ...
- 阶段3 2.Spring_07.银行转账案例_7 代理的分析
新建项目 实现动态代理. 动态代理的概念 买电脑找代理商 代理的出现 解决了生产厂家的一些问题 需要java中的动态代理机制