一、设计方案

1.主题式网络爬虫名称:微博热搜榜前20信息数据爬取进行数据分析与可视化

2.爬取内容与数据特征分析:爬取微博热搜榜前20热搜事件、排名与热度,数据呈一定规律排序。

3.设计方案概述:思路:首先打开目标网站,运用开发工具查看源代码,寻找数据标签,通过写爬虫代码获取所要的数据,将数据保存为csv或者xlsx文件,读取文件对数据进行数据清洗处理、可视化等操作。

难点:网站数据的实时更新,信息容易变动;重点在于寻找数据标签;对数据整理、可视化等代码的掌握程度较低,需要观看以往视频或者上网搜索,进度慢。

二、主题页面的结构特征分析

1.主题页面的结构与特征:通过分析页面得知所要获取的数据分布于a标签中,td为热度标签。

2.Htmls页面解析

3.节点(标签)查找方法与遍历方法:通过re模块的findall方法进行查找。

三、程序设计

1.数据爬取与采集

importreimportrequestsimportpandas as pd#爬取网站

url = 'https://tophub.today/n/KqndgxeLl9'

#伪装爬虫

headers = {'user-Agent':""}#抓取网页信息

response=requests.get(url,headers=headers,timeout=30)

response= requests.get(url,headers =headers)#爬取内容

html =response.text

titles= re.findall('.*?(.*?)',html)[4:24]

heat= re.findall('

(.*?)',html)[:20]

x= {'标题':titles,'热度':heat}

y=pd.DataFrame(x)#创建空列表

data=[]for i in range(20):#拷贝数据

data.append([i+1,titles[i],heat[i][:]])#建立文件

file=pd.DataFrame(data,columns=['排名','热搜事件','热度(万)'])print(file)#保存文件

file.to_excel('D:\\bbc\\微博热搜榜.xlsx')

2.对数据进行清洗和处理

#读取文件

df = pd.DataFrame(pd.read_excel('微博热搜榜.xlsx'))

df.head()

#缺失值处理

df.isnull().head() #True为缺失值,False为存在值

#空值处理#

df.isnull().sum() #0表示无空值

#查找重复值

df.duplicated() #显示表示已经删除重复值

#查看统计信息

df.describe()

3.文本分析:无法安装wordcloud库

4.数据分析与可视化

#绘制条形图

df = pd.read_excel('微博热搜榜.xlsx')

x= df['排名']

y= df['热度(万)']

plt.xlabel('排名')

plt.ylabel('热度(万)')

plt.bar(x,y)

plt.title("微博热搜排名与热度条形图")

plt.show()

#绘制折线图

df = pd.read_excel('微博热搜榜.xlsx')

x= df['排名']

y= df['热度(万)']

plt.xlabel('排名')

plt.ylabel('热度(万)')

plt.plot(x,y,color="blue",label="折线")

plt.title("微博热搜排名与热度折线图")

plt.legend()

plt.show()

#绘制散点图

df = pd.read_excel('微博热搜榜.xlsx')

排名= (df['排名'])

热度= (df['热度(万)'])

plt.figure(figsize=(6,5))

plt.scatter(排名,热度,label=u"样本数据",linewidth=2)

plt.title("微博热搜排名与热度散点图",color="green")

plt.xlabel("排名")

plt.ylabel("热度(万)")

plt.legend()

plt.grid()

plt.show()

5.根据数据之间的关系,分析两个变量之间的相关系数,画出散点图,并建立变量之间的回归方程

#线性关系散点图

df = pd.DataFrame(pd.read_excel('微博热搜榜.xlsx'))

sns.lmplot(x="排名",y= "热度(万)",data=df)

#回归方程曲线图

df = pd.DataFrame(pd.read_excel('微博热搜榜.xlsx'))

q= df['排名']

w= df['热度(万)']deffunc(p,x):

a,b,c=preturn a*x*x+b*x+cdeferror_func(p,x,y):return func(p,x)-y

p0=[0,0,0]

Para=leastsq(error_func,p0,args=(q,w))

a,b,c=Para[0]

plt.figure(figsize=(12,6))

plt.scatter(q,w,color="blue",label=u"热度散点",linewidth=2)

x=np.linspace(0,20,15)

y=a*x*x+b*x+c

plt.plot(x,y,color="green",label=u"回归方程曲线",linewidth=2)

plt.xlabel("排名")

plt.ylabel("热度(万)")

plt.title("微博热搜排名与热度回归曲线图")

plt.legend()

plt.show()

6.代码汇总

importreimportrequestsimportpandas as pdimportseaborn as snsimportnumpy as npfrom numpy importgenfromtxtimportscipy as spimportmatplotlib.pyplot as pltfrom scipy.optimize importleastsq

plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文

plt.rcParams['axes.unicode_minus']=False#用来正常显示负号

#爬取网站

url = 'https://tophub.today/n/KqndgxeLl9'

#伪装爬虫

headers = {'user-Agent':""}#抓取网页信息

response=requests.get(url,headers=headers,timeout=30)

response= requests.get(url,headers =headers)#爬取内容

html =response.text

titles= re.findall('.*?(.*?)',html)[4:24]

heat= re.findall('

(.*?)',html)[:20]

x= {'标题':titles,'热度':heat}

y=pd.DataFrame(x)#创建空列表

data=[]for i in range(20):#拷贝数据

data.append([i+1,titles[i],heat[i][:]])#建立文件

file=pd.DataFrame(data,columns=['排名','热搜事件','热度(万)'])print(file)#保存文件

file.to_excel('D:\\bbc\\微博热搜榜.xlsx')#读取csv文件

df = pd.DataFrame(pd.read_excel('微博热搜榜.xlsx'))

df.head()#缺失值处理

df.isnull().head() #True为缺失值,False为存在值#空值处理#

df.isnull().sum() #0表示无空值#查找重复值

df.duplicated() #显示表示已经删除重复值#查看统计信息

df.describe()#绘制条形图

df = pd.read_excel('微博热搜榜.xlsx')

x= df['排名']

y= df['热度(万)']

plt.xlabel('排名')

plt.ylabel('热度(万)')

plt.bar(x,y)

plt.title("微博热搜排名与热度条形图")

plt.show()#绘制折线图

df = pd.read_excel('微博热搜榜.xlsx')

x= df['排名']

y= df['热度(万)']

plt.xlabel('排名')

plt.ylabel('热度(万)')

plt.plot(x,y,color="blue",label="折线")

plt.title("微博热搜排名与热度折线图")

plt.legend()

plt.show()#绘制散点图

df = pd.read_excel('微博热搜榜.xlsx')

排名= (df['排名'])

热度= (df['热度(万)'])

plt.figure(figsize=(6,5))

plt.scatter(排名,热度,label=u"样本数据",linewidth=2)

plt.title("微博热搜排名与热度散点图",color="green")

plt.xlabel("排名")

plt.ylabel("热度(万)")

plt.legend()

plt.grid()

plt.show()#线性关系散点图

df = pd.DataFrame(pd.read_excel('微博热搜榜.xlsx'))

sns.lmplot(x="排名",y= "热度(万)",data=df)#回归方程曲线图

df = pd.DataFrame(pd.read_excel('微博热搜榜.xlsx'))

q= df['排名']

w= df['热度(万)']deffunc(p,x):

a,b,c=preturn a*x*x+b*x+cdeferror_func(p,x,y):return func(p,x)-y

p0=[0,0,0]

Para=leastsq(error_func,p0,args=(q,w))

a,b,c=Para[0]

plt.figure(figsize=(12,6))

plt.scatter(q,w,color="blue",label=u"热度散点",linewidth=2)

x=np.linspace(0,20,15)

y=a*x*x+b*x+c

plt.plot(x,y,color="green",label=u"回归方程曲线",linewidth=2)

plt.xlabel("排名")

plt.ylabel("热度(万)")

plt.title("微博热搜排名与热度回归曲线图")

plt.legend()

plt.show()

四、结论

1.结论:对主题数据的分析与可视化,能将数据变的更加直观,更加容易观察出数据的规律、关系等。此次微博热榜的排名和热度是呈正比的,但其实事件内容才是吸引大众的关键因素。总之数据发分析与可视化直观的展示信息的分析结果与构思,令抽象的数据具体化,便于我们观察。

2.任务小结:本次程序设计任务完成时间较久,也是在一步一步学习熟悉python的知识,通过本次任务提高了对代码的掌握程度,并且在完成任务的过程中提高了实践能力,也是为以后编写代码打下一点基础。

python爬取微博热搜显示到折线图_微博热搜榜前20信息数据爬取进行数据分析与可视化...相关推荐

  1. python爬取微博热搜显示到折线图_Python爬取新浪微博热搜榜-Go语言中文社区

    我们如何爬取这50条热搜呢?今天写一个简单的方法供感兴趣的朋友们参考! 引用库: requests json lxml.etree bs4.BeautifulSoup引用方法如下: 如果没有下载的需要 ...

  2. Python使用matplotlib函数subplot可视化多个不同颜色的折线图、为指定的子图添加图例信息(legend)

    Python使用matplotlib函数subplot可视化多个不同颜色的折线图.为指定的子图添加图例信息(legend) 目录

  3. python财务报表预测股票价格_机器学习股票价格预测从爬虫到预测-数据爬取部分...

    声明:本文已授权公众号「AI极客研修站」独家发布 前言 各位朋友大家好,小之今天又来给大家带来一些干货了.上篇文章机器学习股票价格预测初级实战是我在刚接触量化交易那会,因为苦于找不到数据源,所以找的一 ...

  4. [python爬虫]selenium模拟登录京东招聘网,爬取研发类,数据清洗,数据存储,终数据分析和可视化

    目录 引入包 模拟登陆京东网 利用XPath对网页源代码进行解析 数据清洗 每页数据以追加形式保存至csv文件 保存数据到MongoDB数据库,参数为字典组成的列表 数据分析与可视化 总函数 引入包 ...

  5. 链家网杭州租房信息数据爬取+数据分析

    参考https://mp.weixin.qq.com/s/vvZ2yBb2eMKP800LUPoAWg 需求分析¶ 过去一个月,全国热点城市的房租如脱缰野马.一线的房租同比涨了近20%.一夜醒来,无产 ...

  6. python如何绘制曲线图_python pandas plot画折线图如何显示x轴的值?

    在使用python pandas Series plot画折线图时,不知道该如何显示x轴的值. 代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...

  7. 赶集网住房信息数据爬取与可视化

    爬虫–scrapy 根据赶集网租房查询不同户型的价格信息,统计不同户型的最高价,最低价,均价,绘制不同户型均价折线图.柱状图 搭建环境 建议换成国内镜像 豆瓣 https://pypi.douban. ...

  8. python计算平均值画折线图_【Python数据分析】一、matplotlib绘制折线图

    matplotlib是最流行的Python会图库,主要做数据可视化图表. 本节目标:学习绘制折线图(plt.plot) 设置图片的大小和分辨率(plt.figure) 实现图片的保存(plt.save ...

  9. matplotlib 折线图_漂亮图表也可信手拈来,一文学会用Python绘制堆积折线图

    今天咱们还是接着上次的话题,继续和大家聊聊关于Python绘图相关的东东哦,上次已经和大家讨论完了如何给自己所绘制的图表中添加装饰线以及修改装饰线密度的方法,今天呢,咱们再聊点的新的东东哦,还是和大家 ...

最新文章

  1. Python Re 模块超全解读!详细
  2. Python超过R,成为数据科学和机器学习的首选语言!
  3. Spring Data JPA(官方文档翻译)
  4. Git Push 避免用户名和密码方法
  5. 读完《Effective Java》后,总结了 50 条开发技巧
  6. Xquery 被设计用来查询 XML 数据
  7. html实现 左图右文_让CSS flex布局最后一行左对齐的N种方法
  8. 容器编排技术 -- kubernetes 通过环境变量向容器暴露 Pod 信息
  9. hanlp加载预训练模型
  10. Mac OS 添加 MySQL 环境变量
  11. 单层感知器的原理及代码实现
  12. mbit职业测试软件,APESK瑞士荣格理论模型职业性格测试(非迫选模式比MBTI性格测试更人性化)(量表版本:V2015-3.1)...
  13. 我的007之skyfall歌词鉴赏及翻译
  14. 8、某网络拓扑如图所示,路由器R1通过接口E1、E2分别连接局域网1、局域网2,通过接口L0连接路由器R2,并通过路由器R2连接域名服务器与互联网。R1的L0接口的IP地址是202.118.2.1/2
  15. 无法更新 EntitySet“Ips_Articles”,因为它有一个 DefiningQuery,而 ModificationFunctionMapping 元素中没有支持当前操作的 Inse...
  16. 股市中的马太效应带给我们什么股票道理?
  17. java全文检索word中的内容_搜索引擎时对WORD,EXCEL,PDF,POWERPOINT文件全文检索的总结...
  18. react native Xcode打包app发布ipa到蒲公英
  19. php 应用宝支付,手游渠道应用宝接入总结
  20. 微信点击链接或者扫描二维码通过默认浏览器打开指定链接是如何实现的

热门文章

  1. Cocoa公历和中国农历直接的转换
  2. 计算机网络 HTTP请求及响应首部字段
  3. Oracle EBS R12 AP模块主要表结构整理
  4. 史上最全亚马逊申诉模板!!!!
  5. 超能陆战队之大白制作过程
  6. 智能家居控制系统MECOOL KA1智能音响
  7. 三星s6如何打开位置服务器,三星手机如何定位对方手机所在位置(如何知道对方手机位置)...
  8. Xcode配置开发分组development team
  9. Postfix 故障解决一例
  10. 红杉官网已删长文:伴随SBF一路走来的救世主情结(上)