python爬虫及数据可视化分析
1.前言
2.数据爬取
2.1定位到爬取数据
2.2爬虫实现方法
3.数据可视化分析
3.1将短文学网的各类文章做一个统计
3.2对某一类文章进行分析
1.前言
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画图。