当前位置: 首页 > news >正文

Python爬虫实战:自动抓取微博热搜并根据帖子生成词云图

概述

本项目主要实现以下功能:

  • 自动登录微博
  • 抓取热搜榜前10条热搜
  • 进入每个热搜话题页面抓取相关微博内容
  • 对内容进行分词处理

5. 生成词云图并保存

使用的主要库

1. Selenium

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

Selenium是一个强大的网页自动化测试工具,在爬虫中主要用于:

  • 模拟浏览器行为
  • 处理动态加载的页面
  • 执行JavaScript
  • 等待页面元素加载

2. jieba

import jieba

jieba是优秀的中文分词库,特点:

  • 支持中文分词
  • 可以识别新词
  • 支持繁体分词
  • 支持自定义词典

3. WordCloud

from wordcloud import WordCloud

WordCloud用于生成词云图,特点:

  • 支持自定义字体
  • 可调整图片大小
  • 支持设置背景颜色
  • 可以设置最大显示词数

4. matplotlib

import matplotlib.pyplot as plt

matplotlib是Python的绘图库,这里用于:

  • 显示词云图
  • 设置图片标题
  • 保存图片文件

代码实现思路

1. 浏览器配置

options = webdriver.ChromeOptions()

options.add_argument('--disable-blink-features=AutomationControlled')

options.add_argument('--window-size=1920,1080')

options.add_argument('user-agent=Mozilla/5.0...')

  • 设置浏览器参数
  • 添加反爬虫措施
  • 设置窗口大小和User-Agent

2. 获取热搜列表

def get_hot_search_items():

    try:

        items = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.data tr')))

        return items

    except:

        # 多个备选选择器...

- 使用显式等待确保页面加载

  • 多个备选选择器增加稳定性
  • 异常处理确保程序稳定运行

3. 处理热搜话题

for topic in topics_to_process:

    driver.get(topic['link'])

    # 获取微博内容

    posts = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.content')))

    content_text = ''

    for post in posts[:20]:

        content_text += post.text + '\n'

  • 访问每个话题页面
  • 获取相关微博内容
  • 限制获取数量避免过度请求

4. 生成词云

wordcloud = WordCloud(

    font_path='simhei.ttf',

    width=800,

    height=400,

    background_color='white',

    max_words=100

).generate(text)

- 使用中文字体

  • 设置合适的图片大小
  • 限制词云中词的数量

运行效果

运行后,程序会:

  • 打开浏览器等待手动登录
  • 自动访问热搜榜
  • 依次处理每个热搜话题
  • 为每个话题生成词云图片

注意事项

1. 需要安装所有必要的库:

pip install selenium beautifulsoup4 jieba wordcloud matplotlib

  • 确保Chrome浏览器和ChromeDriver版本匹配
  • 需要准备中文字体文件(simhei.ttf)

4. 首次运行需要手动登录微博

完整代码放到账号绑定的git地址

可能的改进方向

  • 添加自动登录功能
  • 优化词云图的显示效果
  • 添加数据存储功能
  • 增加定时任务功能
  • 添加代理IP池

总结

这个项目综合运用了多个Python库,实现了网页爬虫、文本处理和数据可视化。通过这个项目,我们可以直观地了解微博热点话题的关键词分布,对舆情分析和热点追踪有一定帮助。

希望这个项目对大家有帮助!如果有任何问题,欢迎在评论区讨论。

---

如果觉得文章有帮助,请点赞收藏,关注我获取更多Python实战项目!

相关文章:

  • 【LLM系列】Deepseek-R1模型详细介绍
  • MySQL -安装与初识
  • C++模拟实现map和set
  • 延迟扩展衰落信道、AWGN、Rayleigh、Rician信道,FMCW雷达的距离、角度、速度信息
  • 前端(vue)学习笔记(CLASS 2):进阶
  • ffmpeg av_find_input_format的作用
  • Windows下不建议使用C/C++运行库的本地化功能
  • transformer架构的语言模型保存的内容与格式详解
  • 【Maven】-- Maven Scope 详解
  • 【一文入门】shell语法进阶篇
  • 鸿蒙next 点击穿透实现
  • org.springframework.boot不存在的其中一个解决办法
  • JAVA面试_进阶部分_Linux面试题
  • Idea 中 Project Structure简介
  • java23种设计模式-中介者模式
  • vue打印页面(可分页、可打印echarts、可显示背景色)
  • Qwen 2.5 技术报告解读
  • leetcode151 反转字符串中的单词
  • Spring Boot 中 @Transactional 注解全面解析
  • MySQL中json类型数据查询
  • 美乌总统梵蒂冈会谈,外交部:望有关各方继续通过对话谈判解决危机
  • 坚守刑事检察一线13年,“在我心中每次庭审都是一次大考”
  • 核电开闸!国常会核准10台新机组,拉动超2000亿投资,新项目花落谁家?
  • 党旗下的青春|83岁仍在“下生活”,他说生活是创作的源泉
  • 商务部:将积极会同相关部门加快推进离境退税政策的落实落地
  • 一季度规模以上工业企业利润由降转增,国家统计局解读