python - bilibili(一)获取直播间标题
近几年,直播平台蛮火的。小时候,经过各种日漫的洗礼,在直播平台自然而然的就盯上了B站。
目前还是python菜鸟一枚,各位大佬请轻拍。
最终效果图:

闲话不说,我们来一步步解析B站的弹幕。
工具:python3.5 平台:windows10
首先,浏览器打开B站直播180房间(2017-07-07更新:少寒主播已离开B站在YY直播,180房间号已不能访问),房间主播是:少寒Shine。
接着,按f12获取网站的源代码

看<head>标签中,编码是utf-8;<title>标签是房间的标题,正是程序所需要的,所以我们只需要用python提取<title></title>这个标签的内容就行了。
思路:
1、导入urllib.request库和re库
2、获取直播的地址。
3、用到python中urllib.request库来请求网页,获取源代码并解码。
4、用正则表达式或者其他方式提取所需要内容。
5、打印所提取的内容。
鉴于正则表达式提取的代码比较长,我选择使用xpath一步到位。xpath是从XML 文档中提取信息,所以要将请求的网页转换成xml文档。xml是第三方库,而不是python自带的库,那么就需要安装xml。python3中xml库的名字叫lxml,具体安装过程请自行百度一下。
那么,我们重新理一下思路:
1、导入urllib.request库和lxml库
2、获取直播的地址。
3、用到python中urllib.request库来请求网页,获取源代码并解码。
4、将网址转换成xml格式。
5、用xpath来提取<title>中的内容。
6、打印所提取的内容。
代码:
import urllib.request
from lxml import etree roomId = input('请输入房间号:')
roomUrl = 'http://live.bilibili.com/'+ str(roomId)
webPage=urllib.request.urlopen(roomUrl)
html = webPage.read().decode('utf-8')
html = etree.HTML(html)
title = html.xpath('//title/text()')
print('房间名称:%s'%title[0])
效果图:

不过,这段代码是有bug的,假如我输入的房间号不是数字或者我输入的数字并不是一个直播间的房间号,那么程序会报错

遇到这种报错,我们就解决bug,让这种错误不再出现。
系列下一章:python - bilibili(二)房间号格式出错
python - bilibili(一)获取直播间标题的更多相关文章
- python - bilibili(二)出错的解决办法
在获取房间号之前我们先解决上篇文章遗留的bug,即输入的房间号不是数字和对应的房间号不存在而产生的问题. 输入的房间号不是数字: 在python中,你所输入的必定是字符串,虽然你输入的是数字,但是类型 ...
- 使用Selenium模拟浏览器抓取斗鱼直播间信息
获取斗鱼直播间每个房间的名称.观看人数.tag.主播名字 代码: import time from multiprocessing import Pool from selenium import w ...
- 模仿UP主,用Python实现一个弹幕控制的直播间!
灵感来源 之前在B站看到一个有意思的视频: [B站][亦]终极云游戏!五千人同开一辆车,复现经典群体智慧实验 大家可以看看,很有意思. up主通过代码实现了实时读取直播间里的弹幕内容,进而控制自己的电 ...
- 基于python的直播间接口测试实战 详解结合项目
基于python的直播间接口测试详解 一.基本用例内容描述 以设置白名单 /advisor/setUserWhiteList.do接口为例,该方法为POST at first,先要导入一些常用到的模块 ...
- Python开发:一个直播弹幕机器人诞生过程,自动发送弹幕
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬取B站弹幕视频讲解 https://www.bilibili.com/vide ...
- python - bilibili(三)wireshark分析
当我们开始打开浏览器,并进入B站直播网页前,我们打开wireshark软件(软件的下载与安装请百度一下)开始截取当前数据. 然后输入直播间网址,enter进入就可以停止截取数据了,然后我们分析所截取的 ...
- 2.如何实现使用VBS脚本程序对直播间自动评论
前言:本文使用的是VBS脚本,实现了对繁星直播自动登录,自动进入房间并且自动评论. 前提准备:把需要刷的评论放到mysql中,再使用vbs读出评论 -------------------------- ...
- Python 多进程编程之 进程间的通信(Queue)
Python 多进程编程之 进程间的通信(Queue) 1,进程间通信Process有时是需要通信的,操作系统提供了很多机制来实现进程之间的通信,而Queue就是其中的一个方法----这是操作系统开辟 ...
- 全栈开发——动手打造属于自己的直播间(Vue+SpringBoot+Nginx)
前言 大学的学习时光临近尾声,感叹时光匆匆,三年一晃而过.同学们都忙着找工作,我也在这里抛一份简历吧,欢迎各位老板和猎手诚邀.我们进入正题.直播行业是当前火热的行业,谁都想从中分得一杯羹,直播养活了一 ...
随机推荐
- MySQL的char和varchar
一.VARCHAR与CHAR字符型数据的差异 在MySQL数据库中,用的最多的字符型数据类型就是Varchar和Char,这两种数据类型虽然都是用来存放字符型数据,但是无论从结构还是从数据的保存方式来 ...
- IOS NSURLRequest 设置 Header
https://my.oschina.net/wolx/blog/406092 工程中的请求,需要设置Header,请求令牌才访问,NSURLRequest 请求没有直接设置header 的方法,需要 ...
- 【转】iOS开发路线简述
简单看了下楼主说的很详细,尤其是最后面那个图描述很直观,让想学习ISO开发的程序猿很清晰每个步骤学习的内容,在此收藏下. iOS系统以及iPhone的出来都要感谢乔布斯,一个完美主义者,从如此优秀的i ...
- usb开发
usb开发 USB HID报告及报告描述符简介 LibUSB通过SetReport()请求与USBHID设备通信 libusb开发者指南 USB枚举和HID枚举实例 USB命令 BusHound数据分 ...
- 安装ARM交叉编译器
1.开发平台 虚拟机:VMware 12 操作系统:Ubuntu 14.04 64bit 2.准备ARM交叉编译工具包 编译uboot和linux kernel都需要ARM交叉工具链支持,这里使用Li ...
- Maven的安装和使用
http://repo.spring.io/release/org/springframework/spring/ 安装配置:https://segmentfault.com/a/1190000003 ...
- cordova环境搭建
首先,需要了解一下cordova 和 phonegap 的关系.phoneGap是原先的名字,Cordova是phoneGap被捐给apache之后 用的项目名,phoneGap的名字也被保留了. 1 ...
- App外包开发周期一般多长?
很多人问我,开发一个app要用多长时间.事实上开发一款app没有固定周期的,得因产品而论,你软件的功能需求决定了app外包开发的周期.但是除了app本身以外,人为因素往往对开发周期也有一定的影响.例如 ...
- JAVA中用于处理字符串的“三兄弟”
JAVA中用于处理字符串常用的有三个类:java.lang.String.java.lang.StringBuffer.java.lang.StringBuilder,这三者的共同之处都是final类 ...
- linux下简单限制网卡速度
Linux下限制网卡的带宽,可用来模拟服务器带宽耗尽,从而测试服务器在此时的访问效果. 1.安装iproute yum -y install iproute 2.限制eth0网卡的带宽为50kbit: ...