商务服务
爬取微博热搜榜
2024-10-31 10:53

一、主题式网络爬虫设计方案
1.主题式网络爬虫名称:爬取微博热搜榜
2.主题式网络爬虫爬取的内容:微博热搜前十
3.主题式网络爬虫设计方案概述:确定爬取网页,将爬取数据保存到csv文件中,并对数据进行清理处理,将数据进行可视化并建立回归方程。知识掌握不充分,对网页爬取还有很多不懂。

爬取微博热搜榜

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


2.Htmls页面解析

三、网络爬虫程序设计

1.数据爬取与采集

import requests
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np
import reurl = 'https://tophub.today/n/KqndgxeLl9'
headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
response = requests.get(url,headers=headers)
html = response.content.decode('utf-8')
html = response.text
titles = re.findall('<a href=https://www.cnblogs.com/redbigbaby/p/.*? target="_blank" .*?>(.*?)</a>',html)[3:13]
hot = re.findall('<td>(.*?)</td>',html)[0:10]
a = []#创建空列表
for i in range(10):
    a.append([i+1,titles[i],hot[i][:-1]])
#完成创建
file = pd.Dataframe(a,columns = ['排名','标题','热度(单位:万)'])
print(file)
file.to_csv('微博热搜.csv')#保存文件


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

s = pd.Dataframe(pd.read_csv('微博热搜.csv'))
s.head()
s.drop('热度(单位:万)',axis = 1,inplace=True)#删除无效列
s.head()
s.duplicated()#查找重复值
s.isna().head()#统计缺失值NaN
s.describe()#使用describe查看统计信息

4.数据分析与可视化

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['Arial Unicode Ms']#用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False#用来正确显示负号
data=np.array([431.3,135.5,128.0,114.0,112.8,97.0,95.5,93.1,89.9,89.3])
index=['1','2','3','4','5','6','7','8','9','10']
s = pd.Series(data,index)
s.name='微博热搜条形图'
s.plot(kind='bar',title='微博热搜条形图')
plt.show()

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

import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
import matplotlib
from scipy.optimize import leastsq
filename = '微博热搜.csv'
colnames=["排名","热度(单位:万)","标题"]
df = pd.read_csv(filename,skiprows=1,names=colnames)
X=df.排名
Y=df.标题
def fit_func(p,x):
    a,b,c=p
    return a*x*x+b*x+c
def error_func(p,x,y):
    return fit_func(p,x)-y
p0=[2,4,6]
para=leastsq(error_func,p0,args=(X,Y))
a,b,c=para[0]
plt.figure(figsize=(8,4))
plt.scatter(X,Y,color="pink",label=u"热搜数据",linewidth=2)
x=np.linspace(0,25,20)
y=a*x*x+b*x+c
plt.plot(x,y,color="blue",label=u"拟合直线",linewidth=2)
plt.title("微博热搜回归方程")
plt.legend()
plt.show()

7.将以上各部分的代码汇总,附上完整程序代码

import requests
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np
import re
url = 'https://tophub.today/n/KqndgxeLl9'
headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
response = requests.get(url,headers=headers)
html = response.content.decode('utf-8')
html = response.text
#print(html)
#解析网页与抓取信息
titles = re.findall('<a href=https://www.cnblogs.com/redbigbaby/p/.*? target="_blank" .*?>(.*?)</a>',html)[3:13]#正则表达
hot = re.findall('<td>(.*?)</td>',html)[0:10]
a = []#创建空列表
for i in range(10):
    a.append([i+1,titles[i],hot[i][:-1]])
#完成创建
file = pd.Dataframe(a,columns = ['排名','标题','热度(单位:万)'])
print(file)file.to_csv('微博热搜.csv')#保存文件
s = pd.Dataframe(pd.read_csv('微博热搜.csv'))
s.head()
s.drop('热度(单位:万)',axis = 1,inplace=True)#删除无效列
s.head()
s.duplicated()#查找重复值
s.isna().head()#统计缺失值NaN
s.describe()#使用describe查看统计信息
#绘制条形图
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['Arial Unicode Ms']#用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False#用来正确显示负号
data=np.array([431.3,135.5,128.0,114.0,112.8,97.0,95.5,93.1,89.9,89.3])
index=['1','2','3','4','5','6','7','8','9','10']
s = pd.Series(data,index)
s.name='微博热搜条形图'
s.plot(kind='bar',title='微博热搜条形图')
plt.show()
#绘制拟合曲线
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
import matplotlib
from scipy.optimize import leastsq
filename = '微博热搜.csv'
colnames=["排名","热度(单位:万)","标题"]
df = pd.read_csv(filename,skiprows=1,names=colnames)
X=df.排名
Y=df.标题
def fit_func(p,x):
    a,b,c=p
    return a*x*x+b*x+c
def error_func(p,x,y):
    return fit_func(p,x)-y
p0=[2,4,6]
para=leastsq(error_func,p0,args=(X,Y))
a,b,c=para[0]
plt.figure(figsize=(8,4))
plt.scatter(X,Y,color="pink",label=u"热搜数据",linewidth=2)
x=np.linspace(0,25,20)
y=a*x*x+b*x+c
plt.plot(x,y,color="blue",label=u"拟合直线",linewidth=2)
plt.title("微博热搜回归方程")
plt.legend()
plt.show()

四、结论

1.经过对主题数据的分析与可视化,可以得到哪些结论?

这有助于我们清晰的了解微博热搜的变化

    以上就是本篇文章【爬取微博热搜榜】的全部内容了,欢迎阅览 ! 文章地址:http://xiaoguoguo.dbeile.cn/news/14.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 多贝乐移动站 http://xiaoguoguo.dbeile.cn/mobile/ , 查看更多   
最新新闻
deepseek使用教程 vscode
标题“websocket包”指代的是一个在计算机网络技术中应用广泛的组件或技术包。WebSocket是一种网络通信协议,它提供了浏览器与服
门店拓客系统搭建门店引流管理系统
门店拓客系统开发详询吴经理,门店拓客系统商城,门店拓客管理系统(悦丹系统开发)。在产业互联网的生态下,产业系统中的供应链
初一为什么吃饺子?吃饺子的由来及包饺子小窍门
过年为什么吃饺子?  一是按照古代的习俗,饺子是过年祭祀后食用的食品。过年时,讲究守岁时包,辞岁时吃,即到子时吃,此时为
揭秘AI搜索新生态:DeepSeek与百度的对比分析
近年来,随着人工智能技术的飞速发展,搜索引擎的市场格局开始发生微妙的变化。特别是挑战传统搜索引擎的AI驱动型平台如DeepSeek
百度答题赚钱怎么做?百度答题利用AI辅助赚取稳定收益完整攻略
关键这是一个长期的项目,在圈内很多人收费大部分的价位是300~1000元不等。今天海哥就来拆解如何利用AI进行百度问题获取收益的完
创新智能设备AI助手:无法错过的高效生活必备工具
在快速发展的智能设备市场中,AI助手的创新技术为用户带来了显著的生活改变。最新推出的智能设备——AI助手Pro,不仅具备高效的
超ChatGPT,DeepSeek成全球增速最快AI应用!国产AI黑马是如何炼成的
DeepSeek作为国产AI应用,自2025年1月11日上线以来,全球日活跃用户突破2215万,成为增速最快的AI应用。其成功吸引了芯片巨头如A
上影厂33位老演员,出生50年代,8位美女走出3位影后
原创 DJ雅清 老电影的那些事今天请大家欣赏昔日上影厂33位老演员的明星老照片。他们全都出生于50年代,个个演技精湛,但男星大多
DeepSeek和豆包哪个更适合普通人?用了几个月,说说我的真实感受
我是一名IT软件工程师,在过去几个月里同时体验了国内两款热门AI工具——DeepSeek和豆包,这两者其实对于我来说日常更多应用于模
探究AI工具的无限可能:从绘画到写作,让你的创作更轻松
随着人工智能(AI)技术的迅猛发展,AI工具在艺术创作和内容生成领域展现出不可思议的潜力。从AI绘画到AI写作,我们可以看到越来