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)
前言 大学的学习时光临近尾声,感叹时光匆匆,三年一晃而过.同学们都忙着找工作,我也在这里抛一份简历吧,欢迎各位老板和猎手诚邀.我们进入正题.直播行业是当前火热的行业,谁都想从中分得一杯羹,直播养活了一 ...
随机推荐
- iOS给model排序
今天有朋友问我怎么给Model排序,我顺便写了一个例子, 以下是代码,很简洁可以直接用. Person *per = [[Person alloc] init]; per.name = @" ...
- Delphi ADOQuery连接数据库的查询、插入、删除、修改
http://blog.csdn.net/chinazhd/article/details/45047777 //查询记录 procedure TForm1.Button1Click(Sender: ...
- 【转】C\C++代码优化的27个建议
1. 记住阿姆达尔定律: funccost是函数func运行时间百分比,funcspeedup是你优化函数的运行的系数. 所以,如果你优化了函数TriangleIntersect执行40%的运行时间, ...
- iOS 获取本地文件的各种坑
1.无论:TXT,EPUB,PDF等各种格式的文件,保存到本地的时候,最好都保存成字母或者数字,不要保存成汉字,否则,在取文件的时候,由于编码的问题,各种瓦特 2.如果文件名真的保存成了汉字,那么进行 ...
- UIAlertController高级之嵌入其他控件 分类: ios技术 2015-02-02 11:58 96人阅读 评论(0) 收藏
在编码过程中,我们经常遇到需要这样一个效果,就是弹出框的嵌套; 举个最简单的例子,比如你要选择时间,必然需要一个时间选择器DatePicker.但是这个选择器又是在你点击某按钮时弹出,弹出方式最常见的 ...
- mac解压缩
tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)---------------.gz解压1:gunz ...
- java实现——008旋转数组的最小数字
public class T008 { public static void main(String[] args) { int[] num = { 3, 4, 5, 1, 2 }; System.o ...
- github的SSH配置如下
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 一 . 设置Git的user name和email: $ git ...
- OpenSceneGraph几个重要功能节点练习
OpenSceneGraph几个重要功能节点练习 一. 空间变换节点 空间变换中最重要的是坐标系和矩阵运算了.OSG坐标系中使用右手系,Z轴垂直向上,X轴水平向右,Y轴垂直屏幕向里,与OpenGL和D ...
- Android组件生命周期(三)
Android系统试图尽可能长地保持一个应用程序进程,但是当内存低时它最终还是需要移除旧的进程.为了决定保持哪个进程及杀死哪个进程,Android将每个进程放入一个基于运行于其中的组件的重要性等级和这 ...