利用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中处理字符串之islower()方法的使用简介
May 19 Python
使用Python简单的实现树莓派的WEB控制
Feb 18 Python
Python实现多线程HTTP下载器示例
Feb 11 Python
python实现Adapter模式实例代码
Feb 09 Python
Python机器学习算法之k均值聚类(k-means)
Feb 23 Python
python使用TensorFlow进行图像处理的方法
Feb 28 Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 Python
使用Python抓取豆瓣影评数据的方法
Oct 17 Python
Python实现通过解析域名获取ip地址的方法分析
May 17 Python
python tkinter组件摆放方式详解
Sep 16 Python
感知器基础原理及python实现过程详解
Sep 30 Python
Python 如何测试文件是否存在
Jul 31 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
实现树状结构的两种方法
2006/10/09 PHP
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
javaScript call 函数的用法说明
2010/04/09 Javascript
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
工作需要写的一个js拖拽组件
2011/07/28 Javascript
jQuery实现公告文字左右滚动的实例代码
2013/10/29 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
jquery实现在光标位置插入内容的方法
2015/02/05 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
js通过canvas生成图片缩略图
2020/10/02 Javascript
使用Python实现毫秒级抢单功能
2019/06/06 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
DJI全球:DJI Global
2021/03/15 全球购物
*p++ 自增p 还是p所指向的变量
2016/07/16 面试题
英文版区域经理求职信
2013/10/23 职场文书
汽车专业学生自我评价
2014/01/19 职场文书
自荐信的基本格式
2014/02/22 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
财会专业大学生求职信
2014/09/26 职场文书
常务副总经理岗位职责
2015/02/02 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书
提升Nginx性能的一些建议
2021/03/31 Servers
tensorflow中的数据类型dtype用法说明
2021/05/26 Python