对于哔哩哔哩动漫排行榜网页信息的爬取及处理(静态网页)

1.数据来源:

哔哩哔哩排行榜

2.数据描述:

利用python的第三方库requests对网页进行爬取

利用re库提供的正则表达式对网页数据进行整理,提取

利用bs4库中的beautifulsoup 对整个网页内容进行解析,抓取

利用pandas库将数据整理成excel文件,以及读取csv文件

利用matplotlib库进行数据可视化展示

数据内容共包括:动漫名称,已更新集数,播放量,点赞量4部分

3.数据处理:

利用requests库中提供的get函数对网页源码内容进行获取

通过beautifulsoup的find_all()来进行解析。在这里,find_all()的第一个参数是标签名,第二个是标签中的class值(注意下划线(class_=‘info’))对标签中的数据进行提取

同理对于已更新集数,播放量,点赞量这三项数据也可以通过findall函数进行提取

已更新集数:

播放量:

点赞量:

处理完数据后保存为字典形式并通过pandas提供的DataFrame函数保存为excel文件

4.可视化过程:

通过matplotlib库进行可视化展示

附录(代码部分):

#导入所需要的第三方库
from bs4 import BeautifulSoup as bs
import requests as rq
import pandas as pd
import matplotlib.pyplot as plt
import rer = rq.get('https://www.bilibili.com/v/popular/rank/bangumi')# 使用get来获取网页数据
r.raise_for_status()              # 如果返回参数不为200,抛出异常
r.encoding = r.apparent_encoding  # 获取网页编码方式
html=r.text
print(html)# 返回获取的内容'
soup = bs(html,'html.parser')#指定BeautifulSoup的解析器#创建列表用于存放所爬取到的数据
name = []  # 动漫名字
play= []  # 播放量
remark = []  #
dz= []  # 点赞数#整理数据 将动漫名字存入name列表中
for i in soup.find_all('div',class_='info'):#遍历爬取到数据中div标签中类为info的数据bf = i.a.string#表示只提取i中a标签内的内容name.append(str(bf))
print(name)#查看收集到的数据#已更新集数存储
for i in soup.find_all('div',class_='detail'):bf = i.find('span',class_='data-box').get_text()#查找i中标签为span且类为data—box中的数据#r表示声明后面字符不是转义字符 bf =re.search(r'\d*\d', bf).group()#使用正则表达式匹配bf中的数字字符play.append(int(bf))#必须统一形式否则后面可视化展示会导致y轴乱序
print(play)#对播放量进行存储
for i in soup.find_all('div', class_='detail'):bf = i.find('span', class_='data-box').next_sibling.next_sibling.get_text()# 统一单位if '亿' in bf:num = float(re.search(r'\d(.\d)?', bf).group()) * 10000
#正则表达式提取bf中的数字,因为网页中过亿的数字最多两位bf=numelse:bf = re.search(r'\d*(\.)?\d', bf).group()remark.append(float(bf))
print(remark)#对点赞量进行存储
for i in soup.find_all('div', class_='detail-state'):sc = i.find('span', class_='data-box').next_sibling.next_sibling.get_text()sc = re.search(r'\d*(\.)?\d', sc).group()dz.append(float(sc))
print(dz)info={'动漫名':name,'已更新集数':play,'播放量(万)':remark,'点赞量(万)':dz}#将之前的列表数据储存为字典 并通过pandas导出
file=pd.DataFrame(info)
#设置excel文件名称为bilibili 工作表名为动漫数据分析 储存在根目录下
file.to_excel('bilibili.xlsx',sheet_name="动漫数据分析")#对数据进行可视化展示
#为了坐标轴上能显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#创建列表用以储存所需展示的数据
mtname = info['动漫名']  # 动漫名
mtplay = info['已更新集数']  # 更新集数
mtremark = info['播放量(万)']  # 播放量
mtdz = info['点赞量(万)']  # 点赞量
#print(len(mtdz))查看数据有几条#利用matplot进行绘制图形
#播放量柱形图
p1 = plt.figure(figsize=(12,6))
a1 = p1.add_subplot(1,1,1)
plt.title('本期B站热榜动漫播放量柱形图')
plt.xlabel('动漫名称')
plt.ylabel('播放量(万次)')
plt.xticks(rotation=270)#加入此行代码可以让x轴文字竖立
plt.bar(mtname,mtremark)
plt.show()#点赞量柱形图
p2 = plt.figure(figsize=(12,6))
a2 = p2.add_subplot(1,1,1)
plt.title('本期B站上榜动漫点赞量柱形图')
plt.xlabel('动漫名称')
plt.ylabel('点赞量(万次)')
plt.xticks(rotation=270)#加入此行代码可以让x轴文字竖立
plt.bar(mtname,mtdz)
plt.show()#播放量折线图
p3 = plt.figure(figsize=(12,6))
a3 = p3.add_subplot(1,1,1)
plt.title('本期B站上榜动漫点赞量折线图')
plt.xlabel('动漫名称')
plt.ylabel('播放量(万次)')
plt.xticks(rotation=270)#加入此行代码可以让x轴文字竖立
for i in range(47):plt.plot(mtname,mtremark)
plt.show()#播放量折线图
p4 = plt.figure(figsize=(12,6))
a4 = p4.add_subplot(1,1,1)
plt.title('本期B站上榜动漫点赞量折线图')
plt.xlabel('动漫名称')
plt.ylabel('点赞量(万次)')
plt.xticks(rotation=270)#加入此行代码可以让x轴文字竖立
for i in range(47):plt.plot(mtname,mtdz)
plt.show()p5 = plt.figure(figsize=(12,6))
ax1=p5.add_subplot(1,1,1)
plt.bar(mtname, mtplay, color='cyan')
plt.title('播放量和已更集数 数据分析')
plt.xlabel('动漫名称')
plt.ylabel('已更集数')
plt.xticks(rotation=270)# *******评论数折线图
ax2 = ax1.twinx()  # 组合图必须加这个
ax2.plot(mtremark, color='green')  # 设置线粗细,节点样式
plt.ylabel('播放量(万)')
plt.plot(1, label='播放量',  linewidth=5.0 ,color='cyan')
plt.plot(1, label='已更集数',  linewidth=1.0,color='green')
plt.legend()
plt.show()
#利用matplot进行绘制图形
#已更集数的柱形图
p6 = plt.figure(figsize=(12,6))
a6 = p6.add_subplot(1,1,1)
plt.title('本期B站热榜动漫已更集数柱形图')
plt.xlabel('动漫名称')
plt.ylabel('已更集数')
plt.xticks(rotation=270)#加入此行代码可以让x轴文字竖立
plt.bar(mtname,mtplay)
plt.show()

Python简单数据处理(静态网页爬取,jupter实现)相关推荐

  1. python手机壁纸超清_详解Python静态网页爬取获取高清壁纸

    前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤 一般地,我们去网上批量打开壁纸的时候一般操作如下: 1.打开壁纸网页 2.单击壁纸图(打开指定壁纸的页面) 3.选择分辨率(我 ...

  2. python使用Cookie登录网页爬取信息(超简单)

    python使用Cookie登录网页爬取信息(超简单) 因为工作原因,需要爬取一个医疗行业的网站的信息,而且目标网站还要登录才给你展现完整的页面,所以有了本文-- 看了好多爬取需要登录的博客,过程不表 ...

  3. 第二十八篇 网页实战之静态网页爬取,四大案例,小说,书,图片等抓取操作

    心得:不知道从什么时候开始,喜欢上了思考,完全可以把自己沉浸在自己的程序中,看着自己一点点的累积,慢慢的成长,证明这一天没有白白浪费掉,感谢还在认真的你. 自己在学习过程中总结出来的爬虫的过程: 1. ...

  4. 静态网页爬取-Requests

    静态网页爬取-Requests import requests r=requests.get('http://www.baidu.com/') print(r.encoding) print(r.st ...

  5. Python爬虫快速入门,静态网页爬取!

    在开始之前,请确保你的电脑上已经安装好了BeautifulSoup库,可以通过在命令行中输入pip install beautifulsoup4来进行安装. 一.数据解析 在爬取之前,我们需要检测下响 ...

  6. Python简单爬虫(以爬取豆瓣高分图书为例)

    前言 浏览器或程序的一次请求,网站服务器的一次响应,就构成一次网络爬虫行为. 一个爬虫通常通过爬虫包完成请求HTML,通过解析包完成HTML解析和存储. 爬虫分类: 全网爬虫 爬取整个互联网,需要定制 ...

  7. beautifulsoup网页爬虫解析_Python爬虫快速入门,静态网页爬取

    在开始之前,请确保你的电脑上已经安装好了BeautifulSoup库,可以通过在命令行中输入pip install beautifulsoup4来进行安装. 一.数据解析 在爬取之前,我们需要检测下响 ...

  8. python壁纸高清图片_详解Python静态网页爬取获取高清壁纸

    前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤 一般地,我们去网上批量打开壁纸的时候一般操作如下: 1.打开壁纸网页 2.单击壁纸图(打开指定壁纸的页面) 3.选择分辨率(我 ...

  9. python简单爬虫案例 [批量爬取文案]

    前言 辅导员要求发博客,不知道写啥.最近学了下python爬虫的东西,就简单写下爬虫吧 本案例使用python爬虫技术从文案网页http://www.xhwag.com/爬取文案并保存到本地 项目准备 ...

最新文章

  1. 2021年大数据ELK(二十):FileBeat是如何工作的
  2. Eclipse工具栏上android的机器人小图标和adt图片的显示
  3. 《大话设计模式》读书笔记-第13章 建造者模式
  4. python读取cad图纸_DWG文件信息的读取
  5. 【BERT实践】看不懂bert没关系,用起来so easy!
  6. java boolean 大小_Java 中 boolean 类型占用多少个字节 [MD]
  7. 移动IPv6光猫登录的一般ip地址账号与密码,移动光猫变桥接模式
  8. java赵云主角兵器谱游戏_三国赵云所用的龙胆亮银枪的起源——传奇兵器谱一、“百兵之王”枪...
  9. Hibernate(八):检索策略
  10. 泛泛而谈的菜鸟学习记录(二)—— unity静态和动态批处理
  11. php guzzle,php – 如何使用Guzzle 6记录所有API调用
  12. 《人生算法》(七)认定方向、坚定执行
  13. 网易云音乐——Web学习day6
  14. 【Java分享客栈】我曾经的两个Java老师一个找不到工作了一个被迫转行了
  15. 统计100以内能被7整除的自然数c语言,编写程序,计算1到100中既能被3整除又能被7整除的所有数,并计算这些数的个数...
  16. 小米max3支持html吗,小米Max3这款手机是否有OTG功能,支持OTG鼠标和U盘吗?
  17. P2P模式分析之资金池与第三方托管
  18. 【MATLAB】使用matlab进行串口通信(详细方法+代码讲解)
  19. 陈芳,高考之后我要学计算机专业,等我干 IT 发财了,我就回来娶你!
  20. PGDM (ICME-2018)

热门文章

  1. c语言编程星空代码,写给初学者──如何学习C语言
  2. 小米电视html插口,小米电视3有什么接口?小米电视3有HDMI接口吗?
  3. odoo之Qweb的一些参数
  4. 蒙特卡洛算法JavaScript实现
  5. XMOS-麦克风阵列方案
  6. 命令行清除redis缓存
  7. (微信)聊天机器人--实用案例
  8. 硬件测试工程师系列0--写在最开始
  9. BLDC电机驱动策略
  10. fork 和 exec 对子进程继承父进程处理信号处理函数的影响