利用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 相关文章推荐
Flask入门教程实例:搭建一个静态博客
Mar 27 Python
尝试用最短的Python代码来实现服务器和代理服务器
Jun 23 Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 Python
python编程之requests在网络请求中添加cookies参数方法详解
Oct 25 Python
python2.7 json 转换日期的处理的示例
Mar 07 Python
pygame游戏之旅 创建游戏窗口界面
Nov 20 Python
python 弹窗提示警告框MessageBox的实例
Jun 18 Python
用Python调用win命令行提高工作效率的实例
Aug 14 Python
python爬虫之遍历单个域名
Nov 20 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
Apr 14 Python
pytorch 限制GPU使用效率详解(计算效率)
Jun 27 Python
python设置表格边框的具体方法
Jul 17 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函数http_build_query使用详解
2014/08/20 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
JavaScript检测字符串中是否含有html标签实现方法
2015/07/01 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
js实现纯前端压缩图片
2020/11/16 Javascript
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
浅析python的Lambda表达式
2019/02/27 Python
python实现飞机大战游戏
2020/10/26 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
C++是不是类型安全的
2014/02/18 面试题
创业计划书撰写原则
2014/01/25 职场文书
《大禹治水》教学反思
2014/04/27 职场文书
党员目标管理责任书
2014/07/25 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
保研推荐信格式
2015/03/25 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
交通事故调解协议书
2015/05/20 职场文书
院系推荐意见
2015/06/05 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
Python打包exe时各种异常处理方案总结
2021/05/18 Python