利用Python构建今日头条搜索结果的可视化图表

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
简介: 利用Python构建今日头条搜索结果的可视化图表

一、项目背景与目标
今日头条的搜索功能是用户获取信息的重要途径之一。用户在搜索框中输入关键词后,平台会返回相关的新闻、文章、视频等内容。这些搜索结果不仅反映了用户的需求,也揭示了当前的热点话题和公众关注的焦点。通过对今日头条搜索结果的分析,我们可以了解以下内容:

  1. 热点话题的分布:哪些关键词在当前时间段内被频繁搜索。
  2. 用户兴趣的动态变化:不同时间段内搜索关键词的变化趋势。
  3. 舆情分析:通过分析搜索结果的内容,了解公众对特定事件的态度。
    本项目的目标是:
  4. 使用Python爬虫技术从今日头条抓取搜索结果数据。
  5. 对抓取的数据进行清洗和整理。
  6. 分析搜索结果的关键词分布和趋势。
  7. 构建可视化图表,直观展示分析结果。
    二、技术栈与工具
    为了实现上述目标,我们将使用以下技术和工具:
  8. Python:强大的编程语言,支持丰富的库和框架,适合爬虫开发和数据分析。
  9. Requests:用于发送HTTP请求,获取网页内容。
  10. BeautifulSoup:用于解析HTML页面,提取所需数据。
  11. Pandas:用于数据处理和分析。
  12. Matplotlib 和 WordCloud:用于数据可视化,生成图表和词云。
  13. Jieba:用于中文分词,提取关键词。
    三、爬虫实现过程
  14. 分析今日头条搜索结果页面
    首先,我们需要分析今日头条的搜索结果页面结构。打开今日头条的搜索页面(https://www.toutiao.com/search/?keyword=关键词),观察搜索结果的展示方式。通常,搜索结果会以列表形式展示,每个结果项包含标题、链接、发布时间等信息。
    通过浏览器开发者工具(F12)查看页面的HTML结构,我们可以发现搜索结果的HTML标签结构如下:
    ```

     <a href="新闻链接" class="title">新闻标题</a>
     <span class="time">发布时间</span>
    

    ...

    ```
  15. 编写爬虫代码
    接下来,我们将使用Python编写爬虫代码,从今日头条抓取搜索结果数据。
    ```import requests
    from bs4 import BeautifulSoup
    import pandas as pd

设置请求头,模拟浏览器访问

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}

搜索关键词

keyword = "热点话题"

搜索结果页面URL

url = f'https://www.toutiao.com/search/?keyword={keyword}'

设置代理信息

proxyHost = "www.16yun.cn"
proxyPort = "5445"
proxyUser = "16QMSOML"
proxyPass = "280651"

构造代理服务器的认证信息

proxies = {
"http": f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}",
"https": f"https://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}"
}

发送HTTP请求,使用代理服务器

response = requests.get(url, headers=headers, proxies=proxies)

判断请求是否成功

if response.status_code == 200:

# 解析HTML页面
soup = BeautifulSoup(response.text, 'html.parser')

# 提取搜索结果列表
result_list = soup.find_all('div', class_='result-item')

# 存储搜索结果数据
search_results = []

for result in result_list:
    title = result.find('a', class_='title').text
    link = result.find('a', class_='title')['href']
    time = result.find('span', class_='time').text
    search_results.append({
        'title': title,
        'link': link,
        'time': time
    })

print("搜索结果数据获取成功!")

else:
print("请求失败,状态码:", response.status_code)

将搜索结果数据转换为DataFrame

df = pd.DataFrame(search_results)

查看数据

print(df.head())

保存数据到CSV文件

df.to_csv('search_results.csv', index=False, encoding='utf-8-sig')

四、数据清洗与整理
获取到的搜索结果数据可能包含一些无用信息或格式问题,需要进行清洗和整理。我们将使用Pandas库对数据进行处理。
```import pandas as pd

# 读取CSV文件
df = pd.read_csv('search_results.csv')

# 查看数据
print(df.head())

# 删除重复项
df.drop_duplicates(inplace=True)

# 查看清洗后的数据
print(df.head())

# 保存清洗后的数据到CSV文件
df.to_csv('cleaned_search_results.csv', index=False, encoding='utf-8-sig')

五、数据分析与可视化

  1. 关键词提取
    搜索结果的标题中往往包含了核心信息,我们可以通过提取关键词来了解热点话题的分布。这里我们将使用Jieba分词工具进行中文分词。
    ```import jieba
    from collections import Counter

提取所有标题

titles = df['title'].tolist()

合并所有标题为一个长字符串

text = ' '.join(titles)

使用Jieba进行分词

words = jieba.cut(text)

统计词频

word_freq = Counter(words)

过滤停用词和单字词

stopwords = set(['的', '和', '是', '在', '我', '有', '不', '人', '都', '一', '一个', '上', '也', '很', '到', '说', '要', '会', '你', '会', '着', '没有', '看', '好', '这'])
filtered_word_freq = {word: freq for word, freq in word_freq.items() if len(word) > 1 and word not in stopwords}

获取最常见的10个关键词

most_common_words = Counter(filtered_word_freq).most_common(10)

print("最常见的10个关键词:", most_common_words)

2. 数据可视化
为了更直观地展示搜索结果的关键词分布和趋势,我们将使用Matplotlib和WordCloud生成可视化图表
```import matplotlib.pyplot as plt
from wordcloud import WordCloud

# 设置Matplotlib支持中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 生成关键词云图
wordcloud = WordCloud(font_path='simhei.ttf', background_color='white', width=800, height=600).generate_from_frequencies(filtered_word_freq)

# 显示关键词云图
plt.figure(figsize=(10, 8))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.title('今日头条搜索结果关键词云图')
plt.show()
  1. 搜索结果趋势分析
    我们还可以分析搜索结果的发布时间,了解热点话题的动态变化趋势。
    ```import matplotlib.pyplot as plt

将发布时间转换为日期格式

df['time'] = pd.to_datetime(df['time'])

按日期统计搜索结果的数量

result_trend = df.groupby(df['time'].dt.date).size()

绘制趋势图

plt.figure(figsize=(10, 6))
plt.plot(result_trend.index, result_trend.values, marker='o')
plt.title('今日头条搜索结果趋势图')
plt.xlabel('日期')
plt.ylabel('搜索结果数量')
plt.xticks(rotation=45)
plt.grid(True)
plt.show()
```
六、总结
通过本文的介绍,我们成功实现了从今日头条抓取搜索结果并进行可视化的完整流程。我们使用Python爬虫技术获取了搜索结果数据,通过Jieba分词提取了关键词,利用Matplotlib和WordCloud生成了可视化图表。
这些可视化图表可以帮助我们直观地了解今日头条搜索结果的热点话题分布和动态变化趋势。这种技术不仅可以应用于新闻领域,还可以扩展到舆情监测、市场分析等多个领域。未来,我们可以进一步优化爬虫性能,增加更多分析维度,如用户评论情感分析、地域分布分析等,以获取更全面的信息

相关文章
|
8天前
|
存储 数据可视化 BI
Python可视化应用——学生成绩分布柱状图展示
本程序使用Python读取Excel中的学生成绩数据,统计各分数段人数,并通过Matplotlib库绘制柱状图展示成绩分布。同时计算最高分、最低分及平均分,实现成绩可视化分析。
38 0
|
2天前
|
数据采集 数据可视化 搜索推荐
Python数据分析全流程指南:从数据采集到可视化呈现的实战解析
在数字化转型中,数据分析成为企业决策核心,而Python凭借其强大生态和简洁语法成为首选工具。本文通过实战案例详解数据分析全流程,涵盖数据采集、清洗、探索、建模、可视化及自动化部署,帮助读者掌握从数据到业务价值的完整技能链。
24 0
|
3月前
|
数据采集 数据可视化 数据挖掘
基于Python的App流量大数据分析与可视化方案
基于Python的App流量大数据分析与可视化方案
|
4月前
|
数据可视化 前端开发 数据挖掘
使用Folium在Python中进行地图可视化:全面指南
Folium是基于Python的交互式地图可视化库,依托Leaflet.js实现地理空间数据展示。本文从安装、基础使用到高级功能全面解析Folium:包括创建地图、添加标记、保存文件,以及绘制热力图、多边形和Choropleth地图等高级操作。通过展示北京市景点与全球地震数据的实际案例,结合性能优化、自定义样式和交互性增强技巧,帮助用户掌握Folium的核心功能与应用潜力,为数据分析提供直观支持。
248 2
|
9月前
|
数据采集 数据可视化 数据挖掘
基于Python的数据分析与可视化实战
本文将引导读者通过Python进行数据分析和可视化,从基础的数据操作到高级的数据可视化技巧。我们将使用Pandas库处理数据,并利用Matplotlib和Seaborn库创建直观的图表。文章不仅提供代码示例,还将解释每个步骤的重要性和目的,帮助读者理解背后的逻辑。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供有价值的见解和技能。
448 0
|
7月前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
1914 7
|
8月前
|
存储 数据可视化 数据挖掘
使用Python进行数据分析和可视化
本文将引导你理解如何使用Python进行数据分析和可视化。我们将从基础的数据结构开始,逐步深入到数据处理和分析的方法,最后通过实际的代码示例来展示如何创建直观的数据可视化。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。让我们一起探索数据的世界,发现隐藏在数字背后的故事!
279 5
|
8月前
|
数据可视化 搜索推荐 Shell
Python与Plotly:B站每周必看榜单的可视化解决方案
Python与Plotly:B站每周必看榜单的可视化解决方案
|
8月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析和可视化
【10月更文挑战第42天】本文将介绍如何使用Python进行数据分析和可视化。我们将从数据导入、清洗、探索性分析、建模预测,以及结果的可视化展示等方面展开讲解。通过这篇文章,你将了解到Python在数据处理和分析中的强大功能,以及如何利用这些工具来提升你的工作效率。
|
9月前
|
机器学习/深度学习 数据可视化 Python
Python实用记录(三):通过netron可视化模型
使用Netron工具在Python中可视化神经网络模型,包括安装Netron、创建文件和运行文件的步骤。
141 2
Python实用记录(三):通过netron可视化模型

热门文章

最新文章

推荐镜像

更多