利用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之配置日志的几种方式
May 22 Python
Python基于分水岭算法解决走迷宫游戏示例
Sep 26 Python
Python编程实现蚁群算法详解
Nov 13 Python
Django自定义用户表+自定义admin后台中的字段实例
Nov 18 Python
python实现数据清洗(缺失值与异常值处理)
Dec 02 Python
django商品分类及商品数据建模实例详解
Jan 03 Python
解决Tensorboard 不显示计算图graph的问题
Feb 15 Python
python代码实现TSNE降维数据可视化教程
Feb 28 Python
python3 使用traceback定位异常实例
Mar 09 Python
Django Path转换器自定义及正则代码实例
May 29 Python
Python实现画图软件功能方法详解
Jul 28 Python
python实现发送带附件的邮件代码分享
Sep 22 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
SSI指令
2006/11/25 PHP
php实现评论回复删除功能
2017/05/23 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
2011/09/19 Javascript
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
Python实现的下载网页源码功能示例
2017/06/13 Python
Python文件操作之合并文本文件内容示例代码
2017/09/19 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
Python学习笔记之装饰器
2020/08/06 Python
美国性感女装网站:bebe
2017/03/04 全球购物
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
为什么要有struct关键字
2012/05/08 面试题
通用自荐信范文
2014/03/14 职场文书
美术教师岗位职责
2014/03/18 职场文书
会计求职自荐信范文
2015/03/04 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
2016年万圣节家长开放日活动总结
2016/04/05 职场文书
利用Python判断你的密码难度等级
2021/06/02 Python