首页 > 编程语言 >python爬取校园集市帖子并生成词云图

python爬取校园集市帖子并生成词云图

时间:2024-06-15 16:43:57浏览次数:21  
标签:content title python 云图 爬取 url json data id

注:本篇需要python基础,json基础


前言:上篇我们学习了怎么用python获取百度热搜,在这篇中,我们将进一步学习,利用python爬取校园集市帖子并生成词云图

目录
灵感背景:经常在群里看见机器人转发的校园集市帖子,于是想要爬取下来分析一下
image

第一步,分析请求

点击链接进入浏览器页面
image
按下F12打开浏览器开发者界面
image
点击网络,按下F5刷新
image
刷新后如图所示
image
点击预览,寻找目标请求
image
最终找到请求
image
点击标头,获取url
image

第二步,编写代码

import requests

#发送http请求
url = 'https://u.xiaouni.com/user-api/content/article/info?id=17020'
response = requests.get(url=url)
#打印结果
print(response.text)

结果如下

{"code":200,"msg":"\u8bf7\u6c42\u6210\u529f","data":{"id":17020,"title":"\u7f8e\u56fd\u8001\u5e74\u5b66\u672f\u4f1a\u8baeGSA","content":"\u6709\u65e0\u5144\u5f1f\u59d0\u59b9\u4e4b\u524d\u53bb\u8fc7\u7f8e\u56fd\u5b66\u672f\u5e74\u4f1aGSA\uff0c\u6c42\u52a9","user_id":16872,"reading":243,"contact_id":16736,"school_id":1,"classify_id":2,"created_at":1718436786,"images":[],"art_like":0,"is_end":0,"is_top":0,"is_rec":0,"status":1,"account":"\u82f9\u679c\u53d1\u7b8d","avatar":"https:\/\/os.xiaouni.com\/uploadsimage\/2023\/09-01\/c3e65afd79583b01.jpg","zone_id":4,"is_like":0,"is_collect":0,"collect_count":0,"comment_count":0,"user":{"id":16872,"is_authority":0,"nickname":"\u5c0f\u7ea2","portrait":"https:\/\/thirdwx.qlogo.cn\/mmopen\/vi_32\/ECkvJVPXNstK1G0syFKuAvko2dF3qibGKLich2mscnYPfiaDylZrLICCG9phvUKbBaDAuk8JgbVibYyyd1AWgs9Qqg\/132","leaver_color":"#FADC3A","leaver_name":"\u5927\u4e00"},"contact":{"id":16736,"money":"0","contact_way_id":2,"contact_info":"3076689048","contact_name":"","contact_way":{"id":2,"name":"QQ"}},"school":{"id":1,"name":"\u534e\u897f"},"classify":{"id":2,"name":"\u4e07\u80fd\u6c42\u52a9","is_anonymous":0}}}

我们发现这个是json格式的内容,而且是以unicode进行编码的结果
我们进一步修改代码,获取帖子标题和内容

import json
import requests

# 发送http请求
url = 'https://u.xiaouni.com/user-api/content/article/info?id=17020'
response = requests.get(url=url)
# json格式化
json_data = json.loads(response.text)
# 获取标题和内容
title = json_data['data']['title']
content = json_data['data']['content']
# 打印标题和内容
print('title:\t'+title,'\ncontent:'+content)

结果如下

title:	美国老年学术会议GSA 
content:有无兄弟姐妹之前去过美国学术年会GSA,求助

成功获取集市帖子

第三步,批量获取帖子

我们改进代码,获取最近的300条帖子,写到一个txt文件中方便后续使用

import json

import requests


class getContent:
    def __init__(self, id: int):
        self.url = 'https://u.xiaouni.com/user-api/content/article/info?id=' + str(id)

    def run(self):
        # 发送http请求
        response = requests.get(url=self.url)
        # json格式化
        json_data = json.loads(response.text)
        # 获取状态码,标题和内容
        status_code = json_data['code']
        if status_code == 200:
            title = json_data['data']['title']
            content = json_data['data']['content']
            # 返回标题和内容
            return '['+title+']:'+content+'\n'
        else:
            return 'none'


for i in range(1, 301):
    id = 17020 - i
    print(i)
    text = getContent(id).run()
    if text != 'none':
        with open('content.txt', 'a', encoding='utf-8') as f:
            f.write(text)

结果如下
image

第四步,绘制词云图

编写一个新的python脚本,将上面获取到的帖子内容绘制成词云图

import jieba
import wordcloud

# 读取文本
with open("content.txt", encoding="utf-8") as f:
    s = f.read()

# 生成分词列表
ls = jieba.lcut(s)

# 从后向前遍历列表,删除长度小于2的元素
for i in range(len(ls) - 1, -1, -1):
    if len(ls[i]) < 2:
        del ls[i]

text = ' '.join(ls)  # 连接成字符串
stopwords = ["可以", "一个", "有没有"]  # 去掉不需要显示的词
wc = wordcloud.WordCloud(font_path="msyh.ttc", width=2560, height=1600, background_color='white', max_words=300,
                         stopwords=stopwords)  # msyh.ttc电脑本地字体,写可以写成绝对路径
wc.generate(text)  # 加载词云文本
wc.to_file("1.png")  # 保存词云图片

打开1.png结果如下 (词语出现频率越高,在词云图中的字就越大)

image

成功实现词云图绘制

标签:content,title,python,云图,爬取,url,json,data,id
From: https://www.cnblogs.com/jeanhua/p/18249453

相关文章

  • python-再求f(x,n)
    [题目描述]已知 用递归函数求解。输入:第一个数是 ......
  • Python基础(一)
    前言为什么要学习python?如果你是一个编程小白,我推荐你学习python,因为它简单,你不会在学习的一开始就被劝退;如果你是一个非python程序员,我推荐你学习python,因为它高效,比起其他编程语言,你可以编写更少的代码,更快的完成工作任务,这样你可以抽出更多的时间陪伴家人;如果你只想学一......
  • Python基础(二)
    四、函数Python提供了多种函数特性,使得代码更加简洁、灵活和可重用。以下是对函数的参数和默认值、可变参数、返回值、作用域、匿名函数、函数注解、装饰器、递归函数、闭包和生成器的详细介绍。1.参数和默认值函数可以接受多个参数,并且可以为参数指定默认值。defgre......
  • Python基础教程(十三):file文件及相关的函数
    ......
  • 递归下降解析器在Python中的实现与应用
    1.引言递归下降解析器是一种用于解析编程语言语法的算法,它通过递归调用函数来处理语法规则。在本文中,我们将深入探讨递归下降解析器的工作原理,以及如何在Python中实现它。2.解析器简介解析器是编译器前端的核心组件之一,负责将源代码转换为编译器能够进一步处理的内部表......
  • Python中的垃圾回收机制
    1.引言在现代编程中,垃圾回收是确保程序稳定运行的关键技术之一。Python,作为一种高级编程语言,拥有一套成熟的垃圾回收机制,它在背后默默地管理着内存,确保程序不会因为内存泄漏而崩溃。本文将深入探讨Python中的垃圾回收机制,以及它如何影响我们的代码。2.Python内存管理基......
  • Python政府短期或长期债务李嘉图等价模型状态矩阵
    ......
  • Python俄罗斯方块可操纵卷积分类 | 稀疏辨识算法 | 微分方程神经求解器
    ......
  • python爬虫获取百度热搜
    注:本篇学习需要python基础前言:在上篇中,我们学习了怎么用python发送网页请求来获取网站的源代码,在这篇中,我们将进一步学习本篇目标:利用python爬虫获取百度热搜第一步,用浏览器打开百度热搜网站百度热搜网址https://top.baidu.com/board?tab=realtime页面如下:第二步,按下F12键......
  • python爬虫入门
    注:本篇需要python基础Python爬虫。相信大家对爬虫这个词都不陌生,那么什么是爬虫呢?简单来说,爬虫就是一只在网上爬行的虫子,它会根据我们设定的规则,自动地获取我们感兴趣的信息。而Python爬虫就是使用Python语言来编写这个虫子的程序。一、准备工作在开始编写Python爬虫之前,我们需......