热度php代码,爬取知乎热度搜索标题并数据分析及可视化(示例代码)

一、主题式网络爬虫设计方案

1、主题式网络爬虫名称:爬取知乎热度数据并数据分析及可视化

2、爬取的内容:知乎热搜的标题、排行、热度

数据特征:随机、以文字和数字为主

3、实现思路:首先查看所要爬取页面的源代码,找到所需要爬取的数据在源代码中的位置,接下来进行数据爬取,并将爬取的数据持久化,保存在excel表格中用于使用,接下来对数据进行清洗处理,并进行数据分析额可视化

技术难点:正则表达式、回归方程

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

1、主题页面的结构和特征分析:所要爬取的热度数据在标签‘td’里面,标题在标签‘ .... ’里面

2、页面解析:

热度php代码,爬取知乎热度搜索标题并数据分析及可视化(示例代码)_第1张图片

20200423210353447378.png

三、

1、数据爬取与采集

importrequestsimportreimportpandas as pdimportopenpyxlimportmatplotlibimportmatplotlib.pyplot as pltimportnumpy as npimportseaborn as snsfrom sklearn.linear_model importLinearRegression

url= ‘https://tophub.today/n/mproPpoq6O‘header= {‘user-agent‘:‘Mozilla/5.0‘}

r= requests.get(url, headers=header)

r.raise_for_status()

r.encoding=r.apparent_encoding

r.text

html=r.text

title= re.findall(‘(.*?)‘,html)[3:20]

redu= re.findall(‘

(.*?)‘,html)[0:17]print(title)print(redu)print(‘{:^55}‘.format(‘知乎热度榜单‘))print(‘{:^5}{:^40}{:^10}‘.format(‘排名‘,‘标题‘,‘热度(单位:万)‘))

num= 8lst=[]for i inrange(num):print(‘{:^5}{:^40}{:^10}‘.format(i+1, title[i], redu[i][:-3]))

lst.append([i+1, title[i], redu[i][:-3]])

df= pd.DataFrame(lst, columns=[‘排名‘,‘标题‘,‘热度(单位:万)‘])

df.to_excel(‘知乎热度榜.xlsx‘)

热度php代码,爬取知乎热度搜索标题并数据分析及可视化(示例代码)_第2张图片

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

df = pd.DataFrame(pd.read_excel(‘知乎热度榜.xlsx‘))print(df.head())print(df.duplicated())print(df[‘标题‘].isnull().value_counts())print(df[‘热度(单位:万)‘].isnull().value_counts())print(df.describe())

热度php代码,爬取知乎热度搜索标题并数据分析及可视化(示例代码)_第3张图片

热度php代码,爬取知乎热度搜索标题并数据分析及可视化(示例代码)_第4张图片

20200423210356800679.png

热度php代码,爬取知乎热度搜索标题并数据分析及可视化(示例代码)_第5张图片

3、数据分析与可视化

defzhexian():

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

x= df[‘排名‘]

y= df[‘热度(单位:万)‘]

plt.xlabel(‘排名‘)

plt.ylabel(‘热度(单位:万)‘)

plt.plot(x,y)

plt.scatter(x,y)

plt.title(‘排名与热度的折线图‘)

plt.show()

zhexian()

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

plt.bar(range(1,9),redu[:8])

plt.xlabel(‘排名‘)

plt.ylabel(‘热度(单位:万)‘)

plt.title(‘排名与热度的柱状图‘)

plt.show()

热度php代码,爬取知乎热度搜索标题并数据分析及可视化(示例代码)_第6张图片

热度php代码,爬取知乎热度搜索标题并数据分析及可视化(示例代码)_第7张图片

4、回归方程

df = pd.read_excel(‘知乎热度榜.xlsx‘)

df.head(8)

X= df.drop(‘标题‘,axis=1)

predict_model=LinearRegression()

predict_model.fit(X, df[‘热度(单位:万)‘])print(‘回归系数:‘,predict_model.coef_)

20200423210358180473.png

5、数据持久化

df = pd.DataFrame(lst, columns=[‘排名‘,‘标题‘,‘热度(单位:万)‘])

df.to_excel(‘知乎热度榜.xlsx‘)

热度php代码,爬取知乎热度搜索标题并数据分析及可视化(示例代码)_第8张图片

6、代码汇总

importrequestsimportreimportpandas as pdimportopenpyxlimportmatplotlibimportmatplotlib.pyplot as pltimportnumpy as npimportseaborn as snsfrom sklearn.linear_model importLinearRegression

url= ‘https://tophub.today/n/mproPpoq6O‘header= {‘user-agent‘:‘Mozilla/5.0‘}

r= requests.get(url, headers=header)

r.raise_for_status()

r.encoding=r.apparent_encoding

r.text

html=r.text

title= re.findall(‘(.*?)‘,html)[3:20]

redu= re.findall(‘

(.*?)‘,html)[0:17]print(title)print(redu)print(‘{:^55}‘.format(‘知乎热度榜单‘))print(‘{:^5}{:^40}{:^10}‘.format(‘排名‘,‘标题‘,‘热度(单位:万)‘))

num= 8lst=[]for i inrange(num):print(‘{:^5}{:^40}{:^10}‘.format(i+1, title[i], redu[i][:-3]))

lst.append([i+1, title[i], redu[i][:-3]])

df= pd.DataFrame(lst, columns=[‘排名‘,‘标题‘,‘热度(单位:万)‘])

df.to_excel(‘知乎热度榜.xlsx‘)

df= pd.DataFrame(pd.read_excel(‘知乎热度榜.xlsx‘))print(df.head())print(df.duplicated())print(df[‘标题‘].isnull().value_counts())print(df[‘热度(单位:万)‘].isnull().value_counts())print(df.describe())defzhexian():

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

x= df[‘排名‘]

y= df[‘热度(单位:万)‘]

plt.xlabel(‘排名‘)

plt.ylabel(‘热度(单位:万)‘)

plt.plot(x,y)

plt.scatter(x,y)

plt.title(‘排名与热度的折线图‘)

plt.show()

zhexian()

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

plt.bar(range(1,9),redu[:8])

plt.xlabel(‘排名‘)

plt.ylabel(‘热度(单位:万)‘)

plt.title(‘排名与热度的柱状图‘)

plt.show()

df= pd.read_excel(‘知乎热度榜.xlsx‘)

df.head(8)

X= df.drop(‘标题‘,axis=1)

predict_model=LinearRegression()

predict_model.fit(X, df[‘热度(单位:万)‘])print(‘回归系数:‘,predict_model.coef_)

四、结论

1、经过对知乎今日的热度标题进行爬取,今日第一和第二名的标题较为受关注,后面的标题较为平稳,相差不大

2、本次的程序设计的任务我完成的时间花了较长,遇到了挺多问题,但是经过百度搜索等等,最后将问题一步步解决,使得我对python更加的感兴趣了,完成任务之后非常的有成就感,正则表达式还不是很会,回归方程也遇到了问题,接下来的学习里,我会更加努力学习计算机这门课程。

你可能感兴趣的:(热度php代码)