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)
前言 大学的学习时光临近尾声,感叹时光匆匆,三年一晃而过.同学们都忙着找工作,我也在这里抛一份简历吧,欢迎各位老板和猎手诚邀.我们进入正题.直播行业是当前火热的行业,谁都想从中分得一杯羹,直播养活了一 ...
随机推荐
- jQuery学习笔记(二)
1. 基本选择器 #id ("#one") .class $(".two") element (根据给定的元素名匹配元素) $("div& ...
- mongodb 3.x connect with credential
package mongoDb; import java.net.UnknownHostException; import java.util.ArrayList; import java.util. ...
- android NDK编译(导入).a文件和编译多个so文件(转)
源:android NDK编译(导入).a文件和编译多个so文件 一.编译一个静态库 libstatic_android.a LOCAL_PATH := $(call my-dir) include ...
- Spring3.2新注解@ControllerAdvice
Spring3.2新注解@ControllerAdvice @ControllerAdvice,是spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强.让我们先看看@Control ...
- 编写高质量JavaScript代码的基本要点记录
原文:深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 1.最小全局变量(Minimizing Globals)的重要性 JavaScript通过函数管理作用域.在 ...
- Less-css预处理编译
node编译 第一步:https://nodejs.org/en/ 到node官网下载最新的node 第二步:和普通软件一样把node安装好 第三步:运行-cmd,准备安装less 全局安装(整个电 ...
- UnitOfWork实战
企业模式之Unit Of Work模式 在开始UnitOfWork模式之前有必要回顾下我们耳熟能详的Data Access Object(DAO)模式,即数据访问对象.DAO是一种简单的模式,我们构建 ...
- UVa 11172 - Relational Operator
题目大意:给两个数,比较大小... #include <cstdio> int main() { int T; scanf("%d", &T); int a, ...
- Android项目文件结构
一.Project项目结构 app/build/ app模块build编译输出的目录 app/build.gradle app模块的gradle编译文件 app/app.iml app模块的配置文件 ...
- 如何解决ADT17下Android第三方jar包NoClassDefFoundError的错误
转自:http://blog.csdn.net/huzgd/article/details/7604069本人已试过第二种解决方法可行!! 原文:Posted by Foxykeep on 22/03 ...