利用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导入时小括号大作用
Jan 10 Python
Python验证文件是否可读写代码分享
Dec 11 Python
详解python实现线程安全的单例模式
Mar 05 Python
Python根据欧拉角求旋转矩阵的实例
Jan 28 Python
python实现AES加密解密
Mar 28 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
python自动化unittest yaml使用过程解析
Feb 03 Python
Anaconda和ipython环境适配的实现
Apr 22 Python
Python中常用的os操作汇总
Nov 05 Python
Python使用windows设置定时执行脚本
Nov 12 Python
解决pycharm 格式报错tabs和space不一致问题
Feb 26 Python
python之django路由和视图案例教程
Jul 26 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中date()日期函数有关参数整理
2011/07/19 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
js有关元素内容操作小结
2011/12/20 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
详解python开发环境搭建
2016/12/16 Python
Python与Java间Socket通信实例代码
2017/03/06 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
2018/02/11 Python
python 文件查找及内容匹配方法
2018/10/25 Python
python实现键盘输入的实操方法
2019/07/16 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
python中Mako库实例用法
2020/12/31 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
2014年国庆标语
2014/06/30 职场文书
2014年管理工作总结
2014/11/22 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
小学生节水倡议书
2015/04/29 职场文书
党风廉政建设心得体会(2016最新版)
2016/01/22 职场文书
2016年党员公开承诺书范文
2016/03/24 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
python xlwt模块的使用解析
2021/04/13 Python
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP