python爬虫及数据可视化分析

1.前言

本篇文章主要介绍python爬虫及对爬取的数据进行可视化分析,本次介绍所用的网站是(https://www.duanwenxue.com/jingdian/zheli/

2.数据爬取

2.1定位到爬取数据

打开我们要爬取的网页,右键选择检查,在窗口中单击左上角箭头,即可查看我们需要爬取的内容:
在这里插入图片描述

2.2爬虫实现方法

我们要爬取一个网页,首先我们需要向网页发送一个请求,然后用get方法抓取数据(例如我要爬取https://www.duanwenxue.com/jingdian/zheli/的内容)

import requests
url = 'https://www.duanwenxue.com/article/5034441.html'
doc = requests.get(url)
print(doc.text)

通过这个方法获得数据是整个网页的源码,接下来我们,接下来要从源码中找到并提取数据。Beautiful Soup 是 python 的一个库,其最主要的功能是从网页中抓取数据。(例如我要获得https://www.duanwenxue.com/article/5035160.html的散文)

import requests
from bs4 import BeautifulSoup
url='https://www.duanwenxue.com/article/5034441.html'
html=requests.get(url)
html.encoding='gbk'
doc=BeautifulSoup(html.text,'lxml')
a=doc.find('span',{'id':'audio-span'})
c=doc.find('div',{'id':'shangDiv'})
a.decompose() # 删除无用信息
c.decompose()
cont=doc.find('div',{'class':'article-content'}).findAll('p')
content=''
for i in cont:
	print(i.text)

输出结果:

人生实在当下,生活唯有形态在奋斗。——余昌开
当下就是人生实现梦想奋斗时。——余昌开
人务必从今开始,努力奋斗,实现人生的理想。——余昌开
人活着最务实的形态,是现在正在奋斗人生美好的进行中。——余昌开
版权作品,未经《短文学》书面授权,严禁转载,违者将被追究法律责任。

3.数据可视化分析

数据可视化是数据分析很重要的一部分,将数据进行可视化,更直观的呈现使数据更加客观、更具说服力。
matplotlib是用来创建图表的工具包之一,是一个Python 2D绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形。

3.1将短文学网的各类文章做一个统计

柱形图:

plt.rcParams['font.sans-serif']=['SimHei']
plt.figure(figsize=(10,10))
plt.xticks(rotation=45)
plt.title("各类文章数目")# 标题
plt.xlabel("文章类型")#横坐标名字
plt.ylabel("数量")#纵坐标名字
plt.bar(x, y)
for x,y in zip(x,y):
    plt.text(x,y,"{f}".format(f=y),ha="center",va='bottom')
plt.show()

结果:
在这里插入图片描述

饼状图:

plt.figure(figsize=(30, 30))  #设置大小
plt.pie(y,labels = x,  autopct='%1.1f%%')
plt.axis('equal')
plt.show()

结果:
在这里插入图片描述

通过对柱形图和饼状图的观察,可以发现在短文学中,“散文随笔”,“心情随笔”,“散文诗”,“散文文字”,“经典语录”类的文学作品占大部分(82%),而其他类型的作品占小部分(18%)。

3.2对某一类文章进行分析

我们选择对励志文章的标题进行分析,通过标题的重点词汇生成词云,反映出这类文章的大致内容趋向于哪一方面。
代码如下:

stopwords={'你','我','的','自己'}# 去掉无用的词
word_cut=jieba.cut(word_content)
word_cut_join=" ".join(word_cut)#把分词用空格连起来
#生成词云
wc=WordCloud(
             font_path='simsun.ttc',#设置字体
             max_words=100,#词云显示的最大词数
             # mask=mask_img,#设置背景图片
             stopwords=stopwords,
             background_color='white'#背景颜色
             ).generate(word_cut_join)

plt.imshow(wc)
plt.axis('off')#去掉坐标轴
plt.savefig('title.jpg')
plt.show()

结果:
在这里插入图片描述

可以看到,多次出现的大学有 “河南”,“科技”,“大学”,“农学院”。

以上便是本文全部内容,代码只包含主要部分,关于数据可视化还有其他几种方法,具体可查看python使用Matplotlib画图。

评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值