利用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 相关文章推荐
在Django中管理Users和Permissions以及Groups的方法
Jul 23 Python
Python基于PycURL自动处理cookie的方法
Jul 25 Python
Python Sqlite3以字典形式返回查询结果的实现方法
Oct 03 Python
老生常谈Python基础之字符编码
Jun 14 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
Sep 11 Python
Python爬虫包BeautifulSoup学习实例(五)
Jun 17 Python
Pycharm 实现下一个文件引用另外一个文件的方法
Jan 17 Python
python numpy之np.random的随机数函数使用介绍
Oct 06 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
Mar 24 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
Nov 05 Python
OpenCV-Python实现人脸磨皮算法
Jun 07 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实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
php创建、获取cookie及基础要点分析
2015/01/26 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
Yii2实现UploadedFile上传文件示例
2017/02/15 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
2014/02/27 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
js实现内置计时器
2019/12/16 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
简单学习Python多进程Multiprocessing
2017/08/29 Python
用python实现的线程池实例代码
2018/01/06 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
大专应届生个人简历的自我评价
2013/10/15 职场文书
大学生年度自我鉴定
2013/10/31 职场文书
计算机软件个人的自荐信范文
2013/12/01 职场文书
区域销售经理岗位职责
2013/12/10 职场文书
化工工艺设计求职信
2014/06/25 职场文书
中学清明节活动总结
2014/07/04 职场文书
表扬信范文
2015/05/04 职场文书
入党后的感想
2015/08/10 职场文书
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang