利用python爬取斗鱼app中照片方法实例


Posted in Python onDecember 03, 2017

前言

没想到python是如此强大,令人着迷,以前看见图片总是一张一张复制粘贴,现在好了,学会python就可以用程序将一张张图片,保存下来。

最近看到斗鱼里的照片都不错,决定用最新学习的python技术进行爬取,下面将实现的过程分享出来供大家参考,下面话不多说了,来一起看看详细的介绍吧。

方法如下:

首先下载一个斗鱼(不下载也可以,url都在这了对吧)

 

通过抓包,抓取到一个json的数据包,得到下面的地址

利用python爬取斗鱼app中照片方法实例 

观察测试可知,通过修改offset值就是相当于app的翻页

访问这个url,返回得到的是一个大字典,字典里面两个索引,一个error,一个data。而data又是一个长度为20的数组,每个数组又是一个字典。每个字典中又有一个索引,vertical_src。

我们的目标就是它了!

import urllib.parse
import urllib
import json
import urllib.request
data_info={}
data_info['type']='AUTO'
data_info['doctype']='json'
data_info['xmlVersion']='1.6'
data_info['ue']='UTF-8'
data_info['typoResult']='true'
head_info={}
head_info['User-Agent']='DYZB/2.271 (iphone; iOS 9.3.2; Scale/3.00)'
url='http://capi.douyucdn.cn/api/v1/getVerticalRoom?aid=ios&client_sys=ios&limit=20&offset=20'
data_info=urllib.parse.urlencode(data_info).encode('utf-8')
print(data_info)
requ=urllib.request.Request(url,data_info)
requ.add_header('Referer','http://capi.douyucdn.cn')
requ.add_header('User-Agent','DYZB/2.271 (iphone; iOS 9.3.2; Scale/3.00)')
response=urllib.request.urlopen(requ)
print(response)
html=response.read().decode('utf-8')

这短短20多行代码就能返回得到json数据了。然后再通过对这json代码的切片,分离得到每个主播照片的url地址。

然后得到这一页的照片

import json
import urllib.request
data_info={}
data_info['type']='AUTO'
data_info['doctype']='json'
data_info['xmlVersion']='1.6'
data_info['ue']='UTF-8'
data_info['typoResult']='true'

url+str(i)='http://capi.douyucdn.cn/api/v1/getVerticalRoom?aid=ios&client_sys=ios&limit=20&offset='+str(x)
data_info=urllib.parse.urlencode(data_info).encode('utf-8')
print(data_info)
requ=urllib.request.Request(url,data_info)
requ.add_header('Referer','http://capi.douyucdn.cn')
requ.add_header('User-Agent','DYZB/2.271 (iphone; iOS 9.3.2; Scale/3.00)')
response=urllib.request.urlopen(requ)
print(response)
html=response.read().decode('utf-8')
'''
 print(type(dictionary))
print(type(dictionary[data]))
'''
dictionary=json.loads(html)
data_arr=dictionary["data"]
for i in range(0,19):
  name=data_arr[i]["nickname"]
  img_url=data_arr[i]["vertical_src"]
  print(type(img_url))
  respon_tem=urllib.request.urlopen(img_url)
  anchor_img=respon_tem.read()
  with open('../photos/'+name+'.jpg','wb') as f:
    f.write(anchor_img)

然后修改一下,让它有了翻页的功能

import urllib.parse
import urllib
import json
import urllib.request
data_info={}
data_info['type']='AUTO'
data_info['doctype']='json'
data_info['xmlVersion']='1.6'
data_info['ue']='UTF-8'
data_info['typoResult']='true'
data_info=urllib.parse.urlencode(data_info).encode('utf-8')

for x in range(0,195):
  url='http://capi.douyucdn.cn/api/v1/getVerticalRoom?aid=ios&client_sys=ios&limit=20&offset='+str(x)
  print(data_info)
  requ=urllib.request.Request(url,data_info)
  requ.add_header('Referer','http://capi.douyucdn.cn')
  requ.add_header('User-Agent','DYZB/2.271 (iphone; iOS 9.3.2; Scale/3.00)')
  response=urllib.request.urlopen(requ)
  print(response)
  html=response.read().decode('utf-8')
  dictionary=json.loads(html)
  data_arr=dictionary["data"]
  for i in range(0,19):
    name=data_arr[i]["nickname"]
    img_url=data_arr[i]["vertical_src"]
    print(type(img_url))
    respon_tem=urllib.request.urlopen(img_url)
    anchor_img=respon_tem.read()
    with open('../photos/'+name+'.jpg','wb') as f:
      f.write(anchor_img)

然后就等着吧~~

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python网络编程基于多线程实现多用户全双工聊天功能示例
Apr 10 Python
python操作excel的方法
Aug 16 Python
基于Python3.6+splinter实现自动抢火车票
Sep 25 Python
python 接收处理外带的参数方法
Dec 03 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
selenium+python环境配置教程详解
May 28 Python
利用Python实现Shp格式向GeoJSON的转换方法
Jul 09 Python
详解Python3 pandas.merge用法
Sep 05 Python
python 牛顿法实现逻辑回归(Logistic Regression)
Oct 15 Python
python爬虫筛选工作实例讲解
Nov 23 Python
用python制作个视频下载器
Feb 01 Python
CentOS 6.5中安装Python 3.6.2的方法步骤
Dec 03 #Python
python3利用smtplib通过qq邮箱发送邮件方法示例
Dec 03 #Python
Python中类的初始化特殊方法
Dec 01 #Python
Python抓取框架Scrapy爬虫入门:页面提取
Dec 01 #Python
Python实现调度算法代码详解
Dec 01 #Python
Python进阶学习之特殊方法实例详析
Dec 01 #Python
Python用户推荐系统曼哈顿算法实现完整代码
Dec 01 #Python
You might like
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
js中函数调用的两种常用方法使用介绍
2014/07/17 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
jQuery webuploader分片上传大文件
2016/11/07 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
2017/02/14 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
Vue实现todo应用的示例
2021/02/20 Vue.js
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
使用Python实现从各个子文件夹中复制指定文件的方法
2018/10/25 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
pytorch 模型的train模式与eval模式实例
2020/02/20 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
Python如何优雅删除字符列表空字符及None元素
2020/06/25 Python
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
bonprix匈牙利:女士、男士和儿童服装
2019/07/19 全球购物
综合办公室个人的自我评价
2013/12/22 职场文书
教师申诉制度
2014/01/29 职场文书
新护士岗前培训制度
2014/02/02 职场文书
初三学生个人自我评定
2014/04/06 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
明星邀请函
2015/02/02 职场文书
2016年公司“3.12”植树节活动总结
2016/03/16 职场文书
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫