Python爬虫以及数据可视化分析!这才是零基础入门案例!

bf = num

else:

bf = re.search(r’\d*(\.)?\d’, bf).group()

play.append(float(bf))

print(play)

******************************************** 评论数存储

for tag in soup.find_all(‘div’, class_=‘detail’):

pl = tag.span.next_sibling.next_sibling

pl = tag.find(‘span’, class_=‘data-box’).next_sibling.next_sibling.get_text()

*********统一单位

if ‘万’ not in pl:

pl = ‘%.1f’ % (float(pl) / 10000)

print(123, pl)

else:

pl = re.search(r’\d*(\.)?\d’, pl).group()

review.append(float(pl))

print(review)

******************************************** 收藏数

for tag in soup.find_all(‘div’, class_=‘detail’):

sc = tag.find(‘span’, class_=‘data-box’).next_sibling.next_sibling.next_sibling.next_sibling.get_text()

sc = re.search(r’\d*(\.)?\d’, sc).group()

favorite.append(float(sc))

print(favorite)

******************************************** 综合评分

for tag in soup.find_all(‘div’, class_=‘pts’):

zh = tag.find(‘div’).get_text()

TScore.append(int(zh))

print(‘综合评分’, TScore)

其中有个.next_sibling是用于提取同级别的相同标签信息,如若没有这个方法,当它找到第一个’span’标签之后,就不会继续找下去了(根据具体情况来叠加使用此方法);

还用到了正则表达式来提取信息(需要导入库‘re’)

最后我们将提取的信息,存进excel表格之中,并返回结果集

# 存储至excel表格中

info = {‘动漫名’: name, ‘播放量(万)’: play, ‘评论数(万)’: review,‘收藏数(万)’: favorite, ‘综合评分’: TScore}

dm_file = pandas.DataFrame(info)

dm_file.to_excel(‘Dongman.xlsx’, sheet_name=“动漫数据分析”)

将所有列表返回

return name, play, review, favorite, TScore

我们可以打开文件看一看存储的信息格式(双击打开)

image.png

image.png

成功!

三、数据可视化分析


我们先做一些基础设置

要先准备一个文件: STHeiti Medium.ttc [注意存放在项目中的位置]

image.png

my_font = font_manager.FontProperties(fname=‘./data/STHeiti Medium.ttc’) # 设置中文字体(图表中能显示中文)

为了坐标轴上能显示中文

plt.rcParams[‘font.sans-serif’] = [‘SimHei’]

plt.rcParams[‘axes.unicode_minus’] = False

dm_name = info[0] # 番剧名

dm_play = info[1] # 番剧播放量

dm_review = info[2] # 番剧评论数

dm_favorite = info[3] # 番剧收藏数

dm_com_score = info[4] # 番剧综合评分

print(dm_com_score)

然后,开始使用matplot来绘制图形,实现数据可视化分析

文中有详细注释,这里就不再赘述了,聪明的你一定一看就懂了~

# **********************************************************************综合评分和播放量对比

*******综合评分条形图

fig, ax1 = plt.subplots()

plt.bar(dm_name, dm_com_score, color=‘red’) #设置柱状图

plt.title(‘综合评分和播放量数据分析’, fontproperties=my_font) # 表标题

ax1.tick_params(labelsize=6)

plt.xlabel(‘番剧名’) # 横轴名

plt.ylabel(‘综合评分’) # 纵轴名

plt.xticks(rotation=90, color=‘green’) # 设置横坐标变量名旋转度数和颜色

*******播放量折线图

ax2 = ax1.twinx() # 组合图必须加这个

ax2.plot(dm_play, color=‘cyan’) # 设置线粗细,节点样式

plt.ylabel(‘播放量’) # y轴

plt.plot(1, label=‘综合评分’, color=“red”, linewidth=5.0) # 图例

plt.plot(1, label=‘播放量’, color=“cyan”, linewidth=1.0, linestyle=“-”) # 图例

plt.legend()

plt.savefig(r’E:1.png’, dpi=1000, bbox_inches=‘tight’) #保存至本地

plt.show()

来看看效果

有没有瞬间就感觉高上~~了(嘿嘿~)

然后我们用相同的方法来多绘制几个对比图:

# **********************************************************************评论数和收藏数对比

********评论数条形图

fig, ax3 = plt.subplots()

plt.bar(dm_name, dm_review, color=‘green’)

plt.title(‘番剧评论数和收藏数分析’)

plt.ylabel(‘评论数(万)’)

ax3.tick_params(labelsize=6)

plt.xticks(rotation=90, color=‘green’)

*******收藏数折线图

ax4 = ax3.twinx() # 组合图必须加这个

ax4.plot(dm_favorite, color=‘yellow’) # 设置线粗细,节点样式

plt.ylabel(‘收藏数(万)’)

plt.plot(1, label=‘评论数’, color=“green”, linewidth=5.0)

plt.plot(1, label=‘收藏数’, color=“yellow”, linewidth=1.0, linestyle=“-”)

plt.legend()

plt.savefig(r’E:2.png’, dpi=1000, bbox_inches=‘tight’)

**********************************************************************综合评分和收藏数对比

*******综合评分条形图

fig, ax5 = plt.subplots()

plt.bar(dm_name, dm_com_score, color=‘red’)

plt.title(‘综合评分和收藏数量数据分析’)

plt.ylabel(‘综合评分’)

ax5.tick_params(labelsize=6)

plt.xticks(rotation=90, color=‘green’)

*******收藏折线图

ax6 = ax5.twinx() # 组合图必须加这个

ax6.plot(dm_favorite, color=‘yellow’) # 设置线粗细,节点样式

plt.ylabel(‘收藏数(万)’)

plt.plot(1, label=‘综合评分’, color=“red”, linewidth=5.0)

plt.plot(1, label=‘收藏数’, color=“yellow”, linewidth=1.0, linestyle=“-”)

plt.legend()

plt.savefig(r’E:3.png’, dpi=1000, bbox_inches=‘tight’)

**********************************************************************播放量和评论数对比

*******播放量条形图

fig, ax7 = plt.subplots()

plt.bar(dm_name, dm_play, color=‘cyan’)

plt.title(‘播放量和评论数 数据分析’)

plt.ylabel(‘播放量(万)’)

ax7.tick_params(labelsize=6)

plt.xticks(rotation=90, color=‘green’)

*******评论数折线图

ax8 = ax7.twinx() # 组合图必须加这个

ax8.plot(dm_review, color=‘green’) # 设置线粗细,节点样式

plt.ylabel(‘评论数(万)’)

plt.plot(1, label=‘播放量’, color=“cyan”, linewidth=5.0)

plt.plot(1, label=‘评论数’, color=“green”, linewidth=1.0, linestyle=“-”)

plt.legend()

plt.savefig(r’E:4.png’, dpi=1000, bbox_inches=‘tight’)

plt.show()

我们来看看最终效果

image.png

image.png

Nice!很完美~ 大家可以根据自己的想法按照相同的方法进行数据组合分析。

最后,附上全部代码

import re

import pandas

import requests

from bs4 import BeautifulSoup

import matplotlib.pyplot as plt

from matplotlib import font_manager

def get_html(url):

try:

r = requests.get(url) # 使用get来获取网页数据

r.raise_for_status() # 如果返回参数不为200,抛出异常

r.encoding = r.apparent_encoding # 获取网页编码方式

return r.text # 返回获取的内容

except:

return ‘错误’

def save(html):

解析网页

soup = BeautifulSoup(html, ‘html.parser’) # 指定Beautiful的解析器为“html.parser”

with open(‘./data/B_data.txt’, ‘r+’, encoding=‘UTF-8’) as f:

f.write(soup.text)

定义好相关列表准备存储相关信息

TScore = [] # 综合评分

name = [] # 动漫名字

bfl = [] # 播放量

pls = [] # 评论数

scs = [] # 收藏数

******************************************** 动漫名字存储

for tag in soup.find_all(‘div’, class_=‘info’):

print(tag)

bf = tag.a.string

name.append(str(bf))

print(name)

******************************************** 播放量存储

for tag in soup.find_all(‘div’, class_=‘detail’):

print(tag)

bf = tag.find(‘span’, class_=‘data-box’).get_text()

统一单位为‘万’

if ‘亿’ in bf:

num = float(re.search(r’\d(.\d)?', bf).group()) * 10000

print(num)

bf = num

else:

bf = re.search(r’\d*(\.)?\d’, bf).group()

bfl.append(float(bf))

print(bfl)

******************************************** 评论数存储

for tag in soup.find_all(‘div’, class_=‘detail’):

pl = tag.span.next_sibling.next_sibling

pl = tag.find(‘span’, class_=‘data-box’).next_sibling.next_sibling.get_text()

*********统一单位

if ‘万’ not in pl:

pl = ‘%.1f’ % (float(pl) / 10000)

print(123, pl)

else:

pl = re.search(r’\d*(\.)?\d’, pl).group()

pls.append(float(pl))

print(pls)

******************************************** 收藏数

for tag in soup.find_all(‘div’, class_=‘detail’):

sc = tag.find(‘span’, class_=‘data-box’).next_sibling.next_sibling.next_sibling.next_sibling.get_text()

sc = re.search(r’\d*(\.)?\d’, sc).group()

scs.append(float(sc))

print(scs)

******************************************** 综合评分

for tag in soup.find_all(‘div’, class_=‘pts’):

zh = tag.find(‘div’).get_text()

TScore.append(int(zh))

print(‘综合评分’, TScore)

存储至excel表格中

info = {‘动漫名’: name, ‘播放量(万)’: bfl, ‘评论数(万)’: pls, ‘收藏数(万)’: scs, ‘综合评分’: TScore}

dm_file = pandas.DataFrame(info)

dm_file.to_excel(‘Dongman.xlsx’, sheet_name=“动漫数据分析”)

将所有列表返回

return name, bfl, pls, scs, TScore

def view(info):

my_font = font_manager.FontProperties(fname=‘./data/STHeiti Medium.ttc’) # 设置中文字体(图标中能显示中文)

dm_name = info[0] # 番剧名

dm_play = info[1] # 番剧播放量

dm_review = info[2] # 番剧评论数

dm_favorite = info[3] # 番剧收藏数

dm_com_score = info[4] # 番剧综合评分

print(dm_com_score)

为了坐标轴上能显示中文

plt.rcParams[‘font.sans-serif’] = [‘SimHei’]

plt.rcParams[‘axes.unicode_minus’] = False

**********************************************************************综合评分和播放量对比

*******综合评分条形图

fig, ax1 = plt.subplots()

plt.bar(dm_name, dm_com_score, color=‘red’) #设置柱状图

plt.title(‘综合评分和播放量数据分析’, fontproperties=my_font) # 表标题

ax1.tick_params(labelsize=6)

plt.xlabel(‘番剧名’) # 横轴名

plt.ylabel(‘综合评分’) # 纵轴名

plt.xticks(rotation=90, color=‘green’) # 设置横坐标变量名旋转度数和颜色

*******播放量折线图

ax2 = ax1.twinx() # 组合图必须加这个

ax2.plot(dm_play, color=‘cyan’) # 设置线粗细,节点样式

plt.ylabel(‘播放量’) # y轴

plt.plot(1, label=‘综合评分’, color=“red”, linewidth=5.0) # 图例

plt.plot(1, label=‘播放量’, color=“cyan”, linewidth=1.0, linestyle=“-”) # 图例

plt.legend()

plt.savefig(r’E:1.png’, dpi=1000, bbox_inches=‘tight’) #保存至本地

plt.show()

**********************************************************************评论数和收藏数对比

********评论数条形图

fig, ax3 = plt.subplots()

plt.bar(dm_name, dm_review, color=‘green’)

plt.title(‘番剧评论数和收藏数分析’)

plt.ylabel(‘评论数(万)’)

ax3.tick_params(labelsize=6)

plt.xticks(rotation=90, color=‘green’)

文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 29
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python 爬虫获取的数据可以通过数据可视化技术进行展示,常用的数据可视化库有 Matplotlib、Seaborn、Plotly 等。使用这些库可以绘制各种图表,如柱状图、折线图、散点图、饼图、热力图等,使数据更加直观易懂。 例如,使用 Matplotlib 绘制柱状图可以使用以下代码: ``` python import matplotlib.pyplot as plt # 数据 x = ['A', 'B', 'C', 'D', 'E'] y = [20, 35, 30, 25, 40] # 绘制柱状图 plt.bar(x, y) # 设置图表标题和坐标轴标签 plt.title('Sales') plt.xlabel('Product') plt.ylabel('Amount') # 显示图表 plt.show() ``` 使用该代码可以绘制出一张柱状图,横轴为产品名称,纵轴为销售额。 ### 回答2: Python爬虫是一种用于从网页上自动提取数据的技术,而数据可视化是将这些提取的数据通过图表、图形等方式展示出来,使得数据更具有直观性和易读性。 使用Python爬虫可以获取各种类型的数据,例如股票行情、天气预报、新闻资讯等。而通过数据可视化,可以将这些数据以直观的方式展示出来,帮助用户更好地理解数据,发现数据中的规律和趋势。 Python中有许多数据可视化的库可以使用,例如Matplotlib、Seaborn和Plotly等。这些库提供了各种绘图函数和工具,能够快速生成各种类型的图表和图形,如折线图、柱状图、散点图、饼图等。 在数据爬取后,我们可以使用Python爬虫库中的数据处理工具,对数据进行清洗和整理,然后传递给数据可视化库进行绘图。可以根据数据的特点选择合适的图表类型,例如使用折线图展示股票的走势,使用柱状图比较不同城市的人口数量等。 通过数据可视化,我们可以更好地理解数据,从而发现数据中的规律和趋势,为决策和分析提供科学依据。此外,通过将数据以图表和图形的形式展示出来,还可以使得数据更具有说服力和易读性,方便与他人进行共享和交流。 总之,Python爬虫数据可视化是将通过Python爬虫获取的数据通过合适的图表和图形展示出来,帮助用户更好地理解数据和发现数据中的规律。这为决策和分析提供了科学依据,并提升了数据的可读性和说服力。 ### 回答3: Python爬虫数据可视化是指使用Python编写爬虫程序,从互联网上抓取所需数据,并利用数据可视化工具对抓取到的数据进行可视化展示。 爬虫是一种自动化的数据采集技术,利用它可以在网页上获取各种形式的数据,如文本、图片、音频、视频等。Python是一种功能强大、易学易用的编程语言,通过Python编写爬虫程序可以更高效地提取所需数据。 数据可视化是将抓取到的数据通过图表、图形、地图等形式进行可视化展示的一种方式。Python中有许多强大的数据可视化工具,比如Matplotlib、Seaborn、Plotly等,它们可以帮助我们将数据变得更加易于理解和分析。 使用Python爬虫进行数据可视化有很多应用场景。比如,在金融领域,我们可以利用爬虫抓取股票市场数据,并通过可视化工具绘制出K线图、趋势图等,帮助投资者进行股票分析与决策;在新闻媒体领域,我们可以通过爬虫获取新闻数据,并通过可视化展示出新闻热点、舆情分布等,帮助新闻编辑做出更好的报道策略。 总之,Python爬虫数据可视化是一个非常有用的技术,可以帮助我们更好地理解和分析抓取到的数据,提高数据分析的效率和准确性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值