利用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之print详解
Sep 28 Python
深入理解Python中各种方法的运作原理
Jun 15 Python
Python使用回溯法子集树模板解决迷宫问题示例
Sep 01 Python
python并发编程之线程实例解析
Dec 27 Python
Python实现邮件的批量发送的示例代码
Jan 23 Python
Python使用装饰器进行django开发实例代码
Feb 06 Python
详解python实现线程安全的单例模式
Mar 05 Python
tensorflow estimator 使用hook实现finetune方式
Jan 21 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
Python3基于plotly模块保存图片表格
Aug 03 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
Aug 03 Python
全网最全python库selenium自动化使用详细教程
Jan 12 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异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
2011/05/19 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
[IE&FireFox兼容]JS对select操作
2007/01/07 Javascript
提高网站信任度的技巧
2008/10/17 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
关于jQuery判断元素是否存在的问题示例探讨
2014/07/21 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
基于Javascript实现弹出页面效果
2016/01/01 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
2018/08/24 Javascript
antd Upload 文件上传的示例代码
2018/12/14 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
python中的全局变量用法分析
2015/06/09 Python
Python语言的面相对象编程方式初步学习
2016/03/12 Python
django中media媒体路径设置的步骤
2019/11/15 Python
python支持多线程的爬虫实例
2019/12/21 Python
Pytorch之保存读取模型实例
2019/12/30 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
公司合作协议书范本
2014/04/18 职场文书
竞选学生会演讲稿
2014/04/25 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
学校开学标语
2014/10/06 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js