学会python可以上天!20行代码获取斗鱼平台房间数据,就是这么牛逼!

Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象、直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句。

Python支持命令式程序设计、面向对象程序设计、函数式编程、面向切面编程、泛型编程多种编程范式。与Scheme、Ruby、Perl、Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理存储器使用。它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。Python虚拟机本身几乎可以在所有的作业系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器运行的程序。

本期用到json,requests库来爬取网页信息,这次爬的是一个特殊多页式网站,普通多页式网站只需分析不同页面的url,找出其中的不同点,用for in来循环即可,但是斗鱼的L中不同页面都是相同的url,这就需要去“F12”来寻找其中的区别。

工具.环境:Python3.6.5,Pycharm,windows10,Firefox

python

1.首先来寻找不同页面的区别

以斗鱼的LOL板块为例:尝试切换不同页面都是相同的url,那怎么办呢??????????按F12呼出开发者工具(在这推荐使用Firefox或chrome浏览器,我用的是Firefox)

开发者工具

要详细学习开发者工具的请自行百度,这里直接选择网络,会看到很多数据,数据发送方法分两种,为“post”and“get”。再选择XHR,点击左上角的删除键,再重新载入网页,就会看到电脑又向服务器发送了多个请求。

网络-XHR。

再重复多换几个页面,发现每次换的页码都与其中一个请求名相同

发现不同

点击该条信息,在右边显示该条信息的消息头,有一个请求网址,把它复制下来,发现末尾的3就是对应的页数。 OK 第一步结束!

python学习路线分三大阶段:基础-进阶-框架-项目实战
基础第一阶段:基础Python的理解。基础第二阶段面对对象编程(注重编程能力)
基础第三阶段面向对象“设计思想”-封装-继承。基础第四阶段python高级专题。
进阶班第一阶段:linux基础。第二:python web工具。第三python部署工具。
第四关系型数据库。第五Python web框架基础原理。
框架阶段.python web开发第一阶段web.py。基础第二Django基础。
第三flask基础。第四tornado基础,
项目实战:个人博客系统-微信开发-企业OA系统=网盘系统

2.get页面信息

打开1中get到的网址

JSON

发现里面有我想要爬取的斗鱼房间信息,那么就是它了,接下来要对它进行解剖。

(1)运用requests来get该网页的信息

import requestsimport jsonurls = ['https://www.douyu.com/gapi/rkc/directory/2_1/{}'.format(page) for page in range(1, 5)]for url in urls: res = requests.get(url) print(res.text) # 可以想先看看get到的是个什么东西

这里运用for in循环来get到1-5页的网页信息for page in range(1, 5),具体见上面代码

(2)运用json库来将已编码的 JSON 字符串解码为 Python 对象

import requestsimport jsonurls = ['https://www.douyu.com/gapi/rkc/directory/2_1/{}'.format(page) for page in range(1, 5)]for url in urls: res = requests.get(url) j = json.loads(res.text) print(j) # 可以看到已解码的对象

json.dumps:将 Python 对象编码成 JSON 字符串json.loads:将已编码的 JSON 字符串解码为 Python 对象

3.处理对象数据

对象数据

看到了一堆糊糊,这时Firefox的优势就体现出来了

json

可以看到各层的所属关系,便于接下来的提取数据,下面是完整代码:

import requestsimport jsonurls = ['https://www.douyu.com/gapi/rkc/directory/2_1/{}'.format(page) for page in range(1, 5)]for url in urls: res = requests.get(url) j = json.loads(res.text) l1 = j['data'] # 通过观察可以发现要的数据在data下 l2 = l1['rl'] #在观察发现在data的rl中 tplt = '{0:{4}<20}\t{1:<12}\t{2:{4}<25}\t{3:<12}' print(tplt.format('主播', '房间号', '房间名', '热度', chr({{12288:0}}))) for i in range(len(l2)): # 这里用到for循环来处理一个列表下多个字典的数据 zhubo = l2[i]['nn'] room = l2[i]['rid'] redu = l2[i]['ol'] roomname = l2[i]['rn'] print(tplt.format(zhubo, room, roomname, redu, chr({{12288:0}})))

4.结果

运行程序

斗鱼LOL板块房间数据

遇到的问题:在名字中出现中英文混合的字符,会出现对不了齐的问题,有解决方法的可以在评论区分享!谢谢

Python可以做什么?
web开发和 爬虫是比较适合 零基础的
自动化运维 运维开发 和 自动化测试 是适合 已经在做运维和测试的人员
大数据 数据分析 这方面 是很需要专业的 专业性相对而言比较强
科学计算 一般都是科研人员 在用
机器学习 和 人工智能 首先 学历 要求高 其次 高数要求高 难度很大

我有一个微信公众号,经常会分享一些python技术相关的干货;如果你喜欢我的分享,可以用微信搜索“python语言学习”关注。

欢迎大家加入千人交流答疑群:588+090+942

原文地址:http://blog.51cto.com/13726370/2120238

时间: 2024-10-24 08:08:28

学会python可以上天!20行代码获取斗鱼平台房间数据,就是这么牛逼!的相关文章

教你几行代码实现全平台端口数据的转发

一.使用背景 现在由于物联网的发展,越来越多的设备,需要接入网络,但是由于,现阶段的网络都还是,使用IPV4,导致IP网段十分紧张,因此如何利用有限的资源,发挥最大的作用越来越重要. 需要说明的是,全平台主要是PC端,包含Windows系统,Linux系统,苹果的系统都可进行使用的. 现在我们使用NB-IOT设备联网测试的时候,有一个需求,需要在Linux环境下,将一个端口收到的数据,转发到另外一个IP的端口上,使用Linux自带的工具,大部分都只能实现TCP数据的 转发,不能实现UDP数据的转

20 行代码极速为 App 加上聊天功能

现在很多 App 都需要集成 IM 功能,今天就为大家分享一下集成 IM 基本功能的步骤.本文内容以 JMessage 为例.极光 IM ( JMessage ) = 极光推送 ( JPush ) + IM,本篇只论述其中的 IM 部分,为大家快速集成 IM 功能提供一个简明的范例. 我们先来看一下 IM 的基本功能与本文内容的对应关系: line 0:准备工作 下载 SDK 集成 SDK line 1:引入头文件 #import <JMessage/JMessage.h> JMessage

HTML5游戏实战(4): 20行代码实现FlappyBird

这个系列很久没有更新了.几个月前有位读者调侃说,能不能一行代码做一个游戏呢.呵呵,接下来一段时间,我天天都在想这个问题,怎么能让GameBuilder+CanTK进一步简化游戏的开发呢.经过几个月的努力,虽然还是做不到一行代码做一个游戏,但是GameBuilder的功能已经有了质的突破了.今天我们用FlappyBird为例介绍一下用GameBuilder +CanTK开发游戏的方法,整个游戏用了不到20行代码. CanTK(Canvas ToolKit)是一个开源的游戏引擎和APP框架,是开发H

python分别使用多线程和多进程获取所有股票实时数据

python分别使用多线程和多进程获取所有股票实时数据 前一天简单介绍了python怎样获取历史数据和实时分笔数据,那么如果要获取所有上市公司的实时分笔数据,应该怎么做呢? 肯定有人想的是,用一个列表存储所有上市公司的股票代号,然后无限循环获取不就得了吗? 现在深市和沪市的股票一共有3400多只,如果你真这样做的话,获取一次所有股票的实时数据需要十几二十秒的时间,甚至更多,而且非常容易因为等待超时而使程序挂掉,如果你的模型对实时数据的质量要求非常高,这肯定是不行的,即使不考虑数据质量,获取数据的

HTML5游戏实战之20行代码实现打地鼠

之前写过一篇打地鼠的博客70行的代码实现打地鼠游戏,细致思考过后,发现70行代码都有点多余了,应用tangide的控件特性,能够将代码量缩减到20行左右. 先show一下终于成果,点击试玩:打地鼠.或者扫描二维码: 假设你想在这个游戏上改进.点击这里. 開始解说之前,打个广告.欢迎html5游戏开发爱好者扫描下方二维码或者搜群号223466431,增加开发人员QQ群,我们免费提供最高速的开发工具.我们的全部html5游戏都开源. 整个游戏的开发.基于在线H5游戏开发工具TangIDE,相关开发文

JavaScript12行代码获取相关节点

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="dv"> <span>这是div中的第一个span标签</span> <p>这是div中的第二个元素

5行代码获取小程序用户的手机号

最近有很多同学有获取小程序用户手机号的需求.其实云开发出现之前我们获取小程序用户的手机号特别繁琐.自从有了云开发,我们获取用户手机号变得非常简单.只需要5行代码即可. 老规矩,我们先来看下效果图 再来看下核心的代码,其实只有下面这一些.甚至可以说核心代码只有上图红色框里的两行.是的,你没听错,只靠这2行代码,就可以轻松的获取用户小程序绑定的手机号.下面我们就来具体讲解吧. 注意:只有企业小程序才可以获取用户手机号,个人小程序没有办法获取的. 一,首先要用到button组件的开发能力 编写wxml

Python十几行代码获取db库新增的poc

1.背景介绍 由于项目需要及个人爱好,我每个月都要下载exploit-db库上的压缩包,更新到自己的漏洞平台上.然而,,在以前都是把exploit的整个文件夹通过远程桌面传到服务器上,由于这个文件夹非常的大,导致每次都需要好长时间才能传完,所以,就想着写个脚本光收集上个月新增的poc. 2.利用工具 Python2.7的os和sys库 3.脚本 首先,db库提供了特别便利的方式,它会有一个excel文件存储漏洞信息,包括poc的文件路径,所以,只要把新增的那些信息放在一个txt文本中,再根据路径

python爬虫-20行代码爬取王者荣耀所有英雄图片,小白也轻轻松松

1.环境 python3.6 需要用到的库: re.os.requests 2.简介 王者荣耀可以算得上是比较受欢迎的手游之一了,应该有不少的人都入坑过农药,我们今天的目的就是要爬取王者荣耀的高清英雄壁纸,包括这些英雄的皮肤,不废话了,go! 3.分析 首先,我们打开王者荣耀的英雄资料 然后,日常F12打开浏览器的开发者工具 可以看到这里返回了一个json数据,里面包含了英雄的名字(cname),皮肤名字(skin_name),英雄id(ename)这个id后面的皮肤有用 具体某一个英雄的网址,