Python3 获取任意贴吧 最新帖子制作词云图存储为markdown!

创新实训——发帖和删帖接口的实现 1.发布帖子    发布帖子需要传入的参数包括帖子的内容,发帖用户的id,以及帖子图片的url。    在数据库中加入帖子的数据,包括帖子的id(自增),发帖用户的id,帖子的内容,图片的url(用json格式存储多个图片url),帖子的发布时间。    在数据库中,一条帖子的所有图片会以url的方式存到json格式的字符串里,真实的图片存储在七牛云上,方便图片的传输。一条帖子的所有点赞用户... 阅读详情

Pycharm中的Python包在 file–>Setting–>Project:lx2–>Project Interpretr下

完整代码展示

import os
import re
import jieba
import urllib.request
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from urllib.request import urlopen
from urllib import parse


def loadPage(url, filename):
    """
        作用:根据url发送请求,获取服务器响应文件
        url: 需要爬取的url地址
        filename : 处理的文件名
    """
    print("正在下载 " + filename)
    html = urlopen(url).read().decode("utf-8")
    return html

def writePage(html, filename):
    """
        作用:将html内容写入到本地
        html:服务器相应文件内容
    """
    print("正在保存 " + filename)
    # 文件写入
    with open(new_file_name+kw+filename, "w", encoding="utf-8") as f:
        f.write(html)
    print("-" * 30)


def tiebaSpider(url, beginPage, endPage):
    """
        作用:贴吧爬虫调度器,负责组合处理每个页面的url
        url : 贴吧url的前部分
        beginPage : 起始页
        endPage : 结束页
    """
    for page in range(beginPage, endPage + 1):
        pn = (page - 1) * 50
        filename = "第" + str(page) + "页.html"
        fullurl = url + "&pn=" + str(pn)
        print(fullurl)
        html = loadPage(fullurl, filename)
        writePage(html, filename)

def newpage(url):
    """
        作用:获取贴吧最新消息并展示出来
        fullurl : 完全连接
        data_topic_name:最新主题
        data_made_time:创建时间
        data_main_info:
    """
    fullurl = url + key + "&ie=utf-8&pn="
    header = ("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.")
    urllib.request.build_opener().addheaders = [header]
    urllib.request.install_opener(urllib.request.build_opener())
    data = urllib.request.urlopen(fullurl).read().decode()
    data_topic_name = re.compile('title="主题作者:(.*?)"').findall(data)
    data_made_time = re.compile('title="创建时间">(.*?)</span>').findall(data)
    data_main_info = re.compile('<a rel="noreferrer" href="/p/.*?" title="(.*?)"').findall(data)
    data_end_name = re.compile('title="最后回复人:(.*?)"').findall(data)
    data_img_picture = re.compile('class="thumbnail vpic_wrap"><img src="" attr=".*?" data-original="(.*?)"').findall(data)
    for picture in range(0, len(data_img_picture)):
        imgurl = data_img_picture[picture]
        file_name = new_file_name+kw+str(picture) + ".jpg"
        urllib.request.urlretrieve(imgurl, filename=file_name)
    mademakdowntitle(biaochang)
    markdownbiao(biaochang, data_made_time)
    markdownbiao(biaochang, data_topic_name)
    markdownbiao(biaochang, data_main_info)
    markdownbiao(biaochang, data_end_name)
    tiezhun = "热门贴主"
    tiezi = "热门帖子"
    huoyue = "贴吧活跃"
    tiebayuntu(data_topic_name, tiezhun)
    tiebayuntu(data_main_info, tiezi)
    tiebayuntu(data_end_name, huoyue)

def markdownbiao(biaochang,dataname):
    """
        作用:判断目录是否存
        fullurl : 完全连接
        data_topic_name:最新主题
        data_made_time:创建时间
        data_main_info:主体信息
    """
    i = 0
    for i in range(0,biaochang):
        if i == 0:
            file.write(str(jianduan))
        elif i < biaochang:
            file.write(dataname[i-1]+str(jianduan))
        else:
            file.write(str(jianduan))
    file.write("\n")

def mademakdowntitle(biaochang):
    for biaoge in range(0, biaochang):
        if biaoge == 0:
            file.write(jianduan)
        elif biaoge < biaochang:
            file.write(str(biaoge) + jianduan)
        else:
            file.write(jianduan)
    file.write("\n")
    for timebiao in range(0, biaochang - 1):
        if timebiao == 0:
            file.write(jianduan)
        elif timebiao < biaochang:
            file.write("----" + jianduan)
        else:
            file.write(jianduan)
    file.write("\n")

def mknewdir(name):
    """
        作用:判断目录是否存
        fullurl : 完全连接
        data_topic_name:最新主题
        data_made_time:创建时间
         data_main_info:主体信息
    """
    isExists = os.path.exists(name)
    if not isExists:
        # 如果不存在则创建目录
        # 创建目录操作函数
        os.makedirs(name)
        print(name + "目录创建成功")
        return True
    else:
        # 如果目录存在则不创建,并提示目录已存在
        print(name + "目录目录已存在")
        return False

def tiebayuntu(data_name,picture_name):
    text = str(data_name)
    cut_text = jieba.cut(text)
    result = " ".join(cut_text)
    wc = WordCloud(
        font_path='FZMengRTJW.TTF',  # 字体路劲
        background_color='white',  # 背景颜色
        width=1920,                 #输出图片的宽度
        height=1080,                #输出图片的高度
        max_font_size=100,  # 最大字体大小
        min_font_size=10,   # 最小
        # mask=plt.imread('./jingyu.png'),  # 背景图片
        max_words=1000
    )
    wc.generate(result)
    wc.to_file(new_file_name+kw+picture_name+".png")
    plt.figure('贴吧热热门贴主')
    plt.axis('off')

if __name__ == "__main__":
    #输入部分
    kw = input("请输入需要爬取的贴吧名:")
    new_file_name = "./"+kw+"/"
    # 创建目录
    mknewdir(new_file_name)
    beginPage = int(input("请输入起始页:"))
    endPage = int(input("请输入结束页:"))
    #如果只爬取首页 则可自定义表长 否则默认为30
    if (beginPage == 1)&(endPage == 1):
        biaochang = int(input("请输markdown入表长"))
    else:
        biaochang = 30

    file = open(new_file_name+kw+"yanshi.md", "w", encoding="utf-8")

    jianduan = "|"
    biaochang = biaochang + 1

    url = "http://tieba.baidu.com/f?"
    key = parse.urlencode({"kw": kw})  # .encode("utf-8")
    fullurl = url + key
    print("key=", key)
    newpage(url)
    tiebaSpider(fullurl, beginPage, endPage)
html = urlopen("http://tieba.baidu.com/f?kw=python&pn=100")

file.close()

关键代码解读

if __name__ == "__main__":
    #输入部分
    kw = input("请输入需要爬取的贴吧名:")
    new_file_name = "./"+kw+"/"
    # 创建目录
    mknewdir(new_file_name)
    beginPage = int(input("请输入起始页:"))
    endPage = int(input("请输入结束页:"))
    #如果只爬取首页 则可自定义表长 否则默认为30
    if (beginPage == 1)&(endPage == 1):
        biaochang = int(input("请输markdown入表长"))
    else:
        biaochang = 30

    file = open(new_file_name+kw+"yanshi.md", "w", encoding="utf-8")

    jianduan = "|"
    biaochang = biaochang + 1

    url = "http://tieba.baidu.com/f?"
    key = parse.urlencode({"kw": kw})  # .encode("utf-8")
    fullurl = url + key
    print("key=", key)
    newpage(url)
    tiebaSpider(fullurl, beginPage, endPage)
html = urlopen("http://tieba.baidu.com/f?kw=python&pn=100")

if name == “ main “: 这个是类似于C语言的int main(),也就是程序入口,在Python中如果有这一段代码,则把Python当做程序来执行,若没有则当做脚本按行执行

fullurl = url + key + "&ie=utf-8&pn="
    header = ("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.")
    urllib.request.build_opener().addheaders = [header]
    urllib.request.install_opener(urllib.request.build_opener())
    data = urllib.request.urlopen(fullurl).read().decode()
    data_topic_name = re.compile('title="主题作者:(.*?)"').findall(data)
    data_made_time = re.compile('title="创建时间">(.*?)</span>').findall(data)
    data_main_info = re.compile('<a rel="noreferrer" href="/p/.*?" title="(.*?)"').findall(data)
    data_end_name = re.compile('title="最后回复人:(.*?)"').findall(data)
    data_img_picture = re.compile('class="thumbnail vpic_wrap"><img src="" attr=".*?" data-original="(.*?)"').findall(data)

在以上的代码中

header = ("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.")
    urllib.request.build_opener().addheaders = [header]

是模拟浏览器去操作获取网页中的数据,而非脚本

urllib.request.install_opener(urllib.request.build_opener())
  data = urllib.request.urlopen(fullurl).read().decode()

则是将网页中的数据读取到data中

data_topic_name = re.compile('title="主题作者:(.*?)"').findall(data)

则是在data也就是所有的网页数据中去匹配title=”主题作者:”后面的数据,获取到就写在data_topic_name中后面所有的操作均是基于它

python中把筛选出的数据写入到markdown表格中

def markdownbiao(biaochang,dataname):
    """
        作用:判断目录是否存
        fullurl : 完全连接
        data_topic_name:最新主题
        data_made_time:创建时间
        data_main_info:主体信息
    """
    i = 0
    for i in range(0,biaochang):
        if i == 0:
            file.write(str(jianduan))
        elif i < biaochang:
            file.write(dataname[i-1]+str(jianduan))
        else:
            file.write(str(jianduan))
    file.write("\n")

这段代码是将python中的数据,写入成markdown中并以表格格式写入

def mademakdowntitle(biaochang):
    for biaoge in range(0, biaochang):
        if biaoge == 0:
            file.write(jianduan)
        elif biaoge < biaochang:
            file.write(str(biaoge) + jianduan)
        else:
            file.write(jianduan)
    file.write("\n")
    for timebiao in range(0, biaochang - 1):
        if timebiao == 0:
            file.write(jianduan)
        elif timebiao < biaochang:
            file.write("----" + jianduan)
        else:
            file.write(jianduan)
    file.write("\n")

这段代码是根据输入的表长创建Markdown表格的头部

完整项目代码获取点这里

Python爬虫获取百度贴吧进行手游评测同时生成词云并进行情感分析——信息检索课设 文章目录一、背景以及需求分析二、前期的准备:Python的安装,第三方库的使用,一些常见问题三、编码过程:模块设计,编码,单元测试以及整合测试(一)从百度贴吧爬取相关内容,并存储在指定的txt文本中(二) 从指定的txt文本读取内容,生成词云(三) 从指定的txt文本读取内容,生成情感趋向折线图四、效果展示以及不足之处 一、背景以及需求分析 最近网易研发出一款末日生存题材的手游——《明日之后》,我... 阅读详情

相关推荐

python爬取某音乐歌词,将内容保存制作词云图

前言 嗨喽!大家好,这里是魔王。 音乐,无论什么时候都有无数人欣赏,好的歌曲还能共情!今天我们就来爬一爬音乐,使用歌词来制作一张有趣的词云图叭~ 【介绍】 python爬虫爬取某音乐歌词,将内容保存 并制作出词云图 【模块】 requests 发送数据请求 (安装方法 >>>pip install requests) parsel 数据解析模块 (安装方法 >>>pip install parsel) jieba

python56123的博客 2266

词云(附带操作实例)

学会词云图的制作方法,要求熟悉jieba分词库的使用,会使用word cloud绘图,以及了解.generate()和.fit_words()方法的区别。

xixixi7777的博客 1933

Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)

思维导图: 效果(语句版): 源码: # -*- coding: utf-8 -*- """ Created on Tue Mar 5 17:59:29 2019 @author: dell """ # ============================================================================= # 步骤: #...

⚡ 6572

python贴吧自动发帖-python接口自动化3-自动发帖(session)

# coding:utf-8import requests# 先打开登录首页,获取部分cookieurl = "https://passport.cnblogs.com/user/signin"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/...

weixin_37988176的博客 456

Python爬虫书籍词云图分析源码(智能爬虫,智能词云,一键化)

Python爬取全网所有书籍,只需要填写书籍连接即可,后台会自动运行爬虫,下载书籍文本到本地,最后会根据智能词云算法开启分词,之后依靠pyecharts这个强大的库,进行词云分析及其展示。全程一键化,没有烦恼,快来下载试试吧!

python3抓百度贴吧帖子源码

分享源码

php获取贴吧帖子内容,爬取某吧的帖子及各帖子所有回复的内容

这个程序有借鉴别人的代码:# -*- coding:utf-8 -*-import osimport codecsimport jsonimport urllibimport urllib.requestfrom lxml import etreeclass Spider:def __init__(self):self.pages = int(input('请输入需要爬取的页数(请输入50的倍数数...

weixin_31857991的博客 627

Seedance2.5本地部署指南:从环境配置到生产优化的完整实践

在 AI 内容生成领域,本地部署方案正逐渐成为开发者和技术团队关注的焦点。Seedance2.5 作为一款支持图像和视频生成的 AI 工具,其完全离线运行的能力解决了云端服务在数据隐私、使用成本和访问稳定性方面的痛点。对于需要处理敏感内容、频繁生成素材或希望完全掌控生成流程的技术人员来说,掌握本地部署方法具有实际价值。 本文将以 Seedance2.5 的本地部署为例,详细介绍从环境准备、依赖配置到运行验证的完整流程,同时深入分析关键参数配置、常见问题排查方法以及生产环境下的优化建议。通过实际部署过程,理解

weixin_33139275的博客 732

Python3 获取任意贴吧 最新帖子 以及获取后制作 词云图详细教程 python3数据写入markdown

需要准备的环境 pycharm pycharm Windows下载链接 Acaconda 64Windows Anaconda下载链接 注意检查Pycharm中是否正确导入了各种Python包 Pycharm中的Python包在 file–&amp;gt;Setting–&amp;gt;Project:lx2–&amp;gt;Project Interpretr下 ...

墨抒颖 258

W5500 TCP服务器状态机详解:从SOCK_CLOSED到SOCK_ESTABLISHED的完整流程

本文深入解析W5500芯片作为TCP服务器时的状态机转换流程,从SOCK_CLOSED到SOCK_ESTABLISHED的完整链路实践。通过硬件协议栈架构分析、状态机全流程拆解及异常处理方案,帮助开发者构建高可靠性的嵌入式网络服务端,优化TCP连接性能与稳定性。

Jerry的专栏 1166

​苹果开发者账号推送证书配置详细指南​

推送证书的配置是iOS应用实现消息推送的核心步骤。通过生成证书、配置描述文件、集成到服务器三大环节,开发者可快速为App启用APNs服务。建议优先使用更灵活的APNs Auth Key替代传统证书,以减少维护成本。确保拥有有效的苹果开发者账号(个人/公司账号),年费已缴纳。

2327

爬虫教程( 2 ) --- scrapy 教程、可视化管理工具、反爬框架、ai 爬虫

scrapy 教程、可视化管理工具、反爬框架、ai 爬虫

freeking101的博客 5258

反无人机作战体系全解析:从低慢小探测到分层拦截

随着小型无人机在军事和民用领域的广泛使用,低慢小目标探测与拦截成为低空安全的核心挑战。传统防空体系面对成本低廉、飞行高度低、雷达特征小的无人机集群时,暴露出探测难、识别难、处置成本失衡等问题。为应对威胁,反无人机体系采用分层闭环设计,融合雷达、光电、声学与无线电侦测实现多源感知,通过电子战软杀伤与导弹、高炮、激光等硬杀伤手段协同配合,并借助自动化指控系统缩短“传感器到射手”的响应时延。该体系既可支撑战场要地防护,也能为民用低空安防提供参考。围绕分层反制逻辑,梳理探测、软硬杀伤、指控布防及实战短板,提供理解反

weixin_42533120的博客 334

Python爬虫之爬取学校所有新闻标题并做成词云分析

1、获取数据并导入excel中 多线程爬取数据,存入excel中 import threading import time from queue import Queue import time,os from selenium import webdriver from lxml import etree from selenium.webdriver.support.wait import ...

积一时之步,臻千里之遥程 5619

DSP28335学习笔记——McBSP配置为SPI

由于28335硬件外设上只有一个SPI接口,所以当SPI接口不够用时,可以将McBSP配置为SPI接口。 参考28335的数据手册,当DSP为主机时,配置McBSP为SPI所用到的接线如下图所示。 另外总结一些调试过程中的经验。 1.传输数据位数的确定 由RCR1寄存器中的RWDLEN1和XCR1寄存器中的XWDLEN1决定。分别对应着接受和发送的位数,在配置成SPI模式的时候,这

捕虫少年 1万+

SOME/IP协议详解「1.1·面向服务与面向信号」

面向信号和面向服务的区别,和举例子

雪云飞星的博客 5656

有道云笔记markdown语法整理

0 标题 标题是每篇文章必备而且最常用的格式。 在Markdown中,如果想将一段文字被定义为标题,只需要在这段文字前面加上 #,再在 # 后加一个空格即可。还可增加二、三、四、五、六级标题,总共六级,只需要增加 # ,增加一个 # ,标题字号相应降低一级。如图: 1 列表 列表格式也很常用,它可以让你的文稿变得井井有

improve100的专栏 4万+

pip install安装markitdown时出现ERROR: ‘packages/markitdown[all]‘ is not a valid editable requirement解决方案

本文主要介绍了pip install安装markitdown时出现ERROR: ‘packages/markitdown[all]’ is not a valid editable requirement解决方案,希望能对使用markitdown的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 3万+

231.菌群物种组成堆叠柱状图、弦图、词云

231.菌群物种组成堆叠柱状图、弦图、词云本节作者:文涛,南京农业大学;刘永鑫,中科院遗传发育所版本1.0.3,更新日期:2020年9月7日本项目永久地址:https://github....

刘永鑫的博客——宏基因组公众号 2万+

第 5 篇:责任链模式 (Chain of Responsibility) —— 协议栈的流水线

本文介绍了责任链模式在嵌入式通信协议解析中的应用。针对传统"面条式"代码维护困难的问题,提出将各协议解析器解耦为独立处理单元,通过链表形式串联。文章详细展示了模式实现:定义抽象处理者接口、实现具体协议处理器、构建链表管理器。该方案具有内存占用低(O(1)栈空间)、可动态扩展、支持优先级调整等优势,并探讨了性能优化策略及动态插件系统等扩展应用,为嵌入式通信协议处理提供了清晰的架构方案。

一路往蓝-Anbo 的博客 179

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

文本可视化(词云图)

文本可视化(词云图) (一)文本可视化种类 (1)基于文本内容的可视化 基于文本内容的可视化研究包括基于词频的可视化和基于词汇分布的可视化,常用的有词云、分布图和 Document Cards 等。 (2)基于文本关系的可视化 基于文本关系的可视化研究文本内外关系,帮助人们理解文本内容和发现规律。常用的可视化形式有树状图、节点连接的网络图、力导向图、叠式图和 Word Tree 等。 (3)基于多层面信息的可视化 基于多层面信息的可视化主要研究如何结合信息的多个方面帮助用户从更深层次理解文本数据,发现其内在

huanxingchen1的博客 9078

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

读取csv数据到词云图并保存图片

csv到词云图

qq_63401240的博客 2071

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

r语言rcpp 无法加载_R语言可视化(二十六):词云图绘制

26. 词云图绘制清除当前环境中的变量rm(list=ls())设置工作目录setwd("C:/Users/Dell/Desktop/R_Plots/26wordcloud/")使用wordcloud2包绘制词云图# 安装并加载所需R包#install.packages("wordcloud2")library(wordcloud2)# 查看示例数据# 第一列为词语名,第二列为词频数he...

weixin_39523625的博客 391

r语言remarkdown展示图_Rmarkdown用法与R语言动态报告

数据分析用R语言非常便捷,因为R语言的社区强大,并且在不断更新和完善,提供了各种分析利器。Knitr和Rmarkdown包则是数据分析中的动态报告利器。下面是一份输出HTML文档的Rmd文件。备忘。---title: "Rmarkdown HandBook"author: "Cheng"date: "2016年9月4日"output:html_document:toc: yesnumber_sec...

weixin_39884738的博客 1420

python生成词云图

所谓一张图胜过千言万语,在信息爆炸时代,一张形象生动的信息图往往要比一篇深度长文章更容易赢得眼球和青睐,万能的python怎么会少了这种工具呢,wordcloud是python的一个词云生成库,只需要简单的几段代码就能提炼出一篇文章出现频率最多的关键词。 sudo pip3 install --upgrade pip #python3升级pip pip3 install --use...

只想整天学习 8493
上一篇: 聊聊Python数据处理全家桶,最全总结!
下一篇: Python网络爬虫快速上手!零基础入门教程!
pythonlaodi
博客等级 码龄6年 286粉丝 244原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值