前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

最近一直在关注百度明星吧,发现很多有趣的帖子,于是我就想用python把这些帖子都爬下来,并对内容进行分析。

本文的知识点:

介绍了mysql数据库内容插入及提取的简单应用;

介绍了如何从mysql数据库提取文本并进行分析;

介绍了数据分析的切入点及思路。

对于初学者想更轻松的学好Python开发技术,Python爬虫,Python大数据分析,人工智能等技术,这里给大家分享一套系统教学资源,加一下我建的Python技术的学习裙;七八四七五八二一四,一起学习。有相关开发工具,学习教程,每天还有专业的老司机在线直播分享知识与技术答疑解惑!

下面给大家详细介绍一下实现过程:

一、网站分析

贴吧的翻页通过url的变化来实现,主要是pn参数:

https://tieba.baidu.com/f?kw=明星&ie=utf-8&pn=页数*50

帖子的内容、发帖者及跟帖数量都可以在网页中找到:

所以,我们只需要用requests模拟请求获得,再用bs4解析就可以获得想要的内容了

二、python编程实现

1.爬取数据

用了静态网页爬虫的老套路,根据网页源码的特点,用find_all函数提取了帖子、发帖人及跟帖数量等信息,并将3类信息放入列表中,最终生成1个二维列表result,主要为了方便存入数据库,代码如下:

for t in range(250): print('第{0}页'.format(t+1))

url='https://tieba.baidu.com/f?kw=明星&ie=utf-8&pn={0}'.format(t*50)

header = { 'User-Agent': 'Mozilla/5.0(Windows NT 6.1; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0' }

response = requests.get(url, header)

soup = BeautifulSoup(response.text, 'html.parser')

items_content = soup.find_all('a', class_='j_th_tit') #内容

items_user = soup.find_all('span', class_='tb_icon_author') #昵称

items_comment = soup.find_all(class_='threadlist_rep_num center_text') #跟帖数量

for i, j, k in zip(items_content, items_user, items_comment):

result.append([i.get('title'), j.get('title')[5:], k.text])

time.sleep(1)

2.存入数据库

先创建1个新表,命名为‘STAR’,然后再创建3列,分别命名为“title”、‘author’和‘num’,用于存放1中怕的内容,最后将二维列表result中的内容存入数据库:

conn=pymysql.connect(

host='127.0.0.1',

port=3306,

user='root',

password='数据库密码',

db='test1',

charset='utf8mb4' )

cur = conn.cursor() #如果存在TIEBA表,则删除

cur.execute("DROP STAR IF EXISTS STAR") #创建TIEBA表

sql = """ create table STAR(

title char(255),

author char(100),

num char(20)) """ cur.execute(sql) for i in result:

cur.execute("INSERT INTO STAR(title,author,num) VALUES ('{0}','{1}','{2}')".

format(i[0].replace('\'','').replace('\"','').replace('\\',''), i[1], i[2]))

conn.commit()

由于帖子内容中存在表情等符号,所以选择用'utf8mb4'这样就可以把表情也存入数据库了,但是还有一些标点符号在写入过程会出错,所以用replace给替换掉了。

总共爬了250页数据,最后的结果如下:

总共爬了1万3千多条数据,基本把最近两年的帖子都爬完了。

三、可视化展示

用create_engine模块读取数据库表中的内容,代码如下:

import pandas as pd from sqlalchemy importcreate_engine # 初始化数据库连接,使用create_engine模块

engine =create_engine('mysql+pymysql://root:密码@127.0.0.1:3306/test1') # 查询语句,选出STAR表中的所有数据

sql = ''' select *from STAR; '''

# read_sql_query的两个参数: sql语句, 数据库连接

df =pd.read_sql_query(sql, engine) # 输出STAR表的查询结果

df['num']=[int(i) for i in list(df['num'])]

df=df.drop_duplicates(subset=['title','author','num'], keep='first')

因为跟帖数量是以字符格式存入的,所以先将其转为整数,再用drop_duplicates模块对数据进行去重,这样就把数据整理完毕了。

上万条数据放在你面前,用肉眼是看不出什么名堂的,所以我这里选择了几个角度,用python统计分析这个贴吧里到底隐藏着什么秘密

1.找出发帖数量最多的20个人

说简单点就是创建1个空字典,然后把df['author']转成列表,统计列表中元素个数,将元素及个数存入字典中,再对字典进行排序,将前十个画成柱状图,代码如下:

#发帖数量排名

rank_num={} for i in list(set(list(df['author']))):

rank_num[i.replace(' ', '')] = list(df['author']).count(i)

rank_num = sorted(rank_num.items(), key=lambda x: x[1], reverse=True)

bar = Bar("柱状图", "发帖数量-昵称")

bar.add("发帖数量-昵称", [i[0] for i in rank_num[:10]], [i[1] for i in rank_num[:10]],

xaxis_rotate=45, mark_line=["average"], mark_point=["max", "min"])

bar.render('发帖数量-昵称.html')

结果如下:

这个猎头发帖有点猛啊,单人最高发了751个,真厉害。

2.找出跟帖数最多的20个帖子

dff=df.sort_values(by='num', ascending=False).head(10)

bar = Bar('跟帖数量排名',width=1000,height=400)

bar.use_theme('dark')

bar.add('' ,dff['title'][::-1], dff['num'][::-1], is_convert=True, is_yaxis_inverse=False, xaxis_rotate=45,is_label_show=True,label_pos='right')

bar.render("跟帖数量排名.html")

结果如下:

跟帖最多的竟然是个水贴,数量高达73459次

3.制作所有帖子的词云图

先把所有帖子连接成字符,用jieba进行分词,插入背景图片,代码如下:

import matplotlib.pyplot as plt import jieba from wordcloud importwordcloud

text=''

for i in list(df['title']):

text+=i print(text)

cut_text = jieba.cut(text)

result=[] for i in cut_text:

result.append(i)

result = " ".join(result)

wc = wordcloud.WordCloud(

font_path='C:\Windows\Fonts\FZBWKSJW.TTF', # 字体路径

background_color='white', # 背景颜色

width=1000,

height=600,

max_font_size=1000, # 字体大小

min_font_size=10,

mask=plt.imread('水滴.jpg'), # 背景图片

max_words=100000)

wc.generate(result)

wc.to_file('result.png') # 图片保存

效果如下:

看了这张词云图,可以确定贴吧基本已经被猎头占领了,连肖战、李现等流量小生都被压下去了。

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[python深挖65万人的明星贴吧,探究上万个帖子的秘密]http://www.zyiz.net/tech/detail-141436.html

python谁的教程好贴吧_python深挖65万人的明星贴吧,探究上万个帖子的秘密相关推荐

  1. python深挖65万人的明星贴吧,探究上万个帖子的秘密

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 最近一直在关注百度明星吧,发现很多有趣的帖子,于是我就想用python把这 ...

  2. python编程案例教程第四章_Python编程入门-第四章 流程控制 -学习笔记

    第四章 流程控制 一.布尔逻辑 *在Python中,用True和False表示真值.一般使用4个主要的逻辑运算符来组合形成布尔值:not\and\or\==. 如: False==False #Tru ...

  3. python编程入门教程第6讲_Python开发的入门教程(六)-函数

    介绍 本文主要介绍Python中函数的基本知识和使用 Python之什么是函数 我们知道圆的面积计算公式为: S = πr² 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需要计算3个不同 ...

  4. python程序设计基础教程骆焦煌_Python程序设计基础教程

    本书依据全国计算机等级考试二级Python语言程序设计考试大纲撰写,同时根据实际需要增加图形用户界面和网络爬虫与数据分析内容.本书以Python 3.6和Anaconda3版本为背景,介绍Python ...

  5. python语言程序设计教程答案赵璐_python语言程序设计教程赵璐答案

    相关请根则的做出正确据独计准立审代为的专断规定业判,程序M注在制计师计计册会定审划时,程序相关确认正在监管进行同时问题对公调查部门司的收入,目负注册责人计项派MU公并指师为司审会计,结果尚无,然决计师 ...

  6. 用python turtle画小黄人源码_Python turtle模块小黄人程序

    import turtle t = turtle.Turtle() wn = turtle.Screen() turtle.colormode(255) t.hideturtle() t.speed( ...

  7. python编程案例教程答案-python编程案例教程pdf下载

    python编程案例教程pdf下载内容摘要 python编程案例教程pdf下载教程,巧妙的谋划,巧妙的计谋.娄底电脑教程,巧克力奶茶等都是理想的增肥品.巧克力麦片等等,南宁街舞教程,巧克力成为一种&q ...

  8. python语言程序设计实践教程答案实验六_Python程序设计实践教程

    书名:Python程序设计实践教程 定价:29.8 ISBN:9787115532602 作者:储岳中 薛希玲 版次:*1版 出版时间:2020-04 内容提要: 本书是Python语言程序设计的配套 ...

  9. python 微信机器人教程_Python创建微信机器人(附赠Python视频教程)

    微信,一个日活10亿的超级app,不仅在国内社交独领风骚,在国外社交也同样占有一席之地.今天我们要讲的便是如何用Python来做一个微信聊天机器人,突然想起鲁迅先生曾经说过的一句话: 因为是微信机器人 ...

  10. python独立网站教程_python做网站教程_如何免费做网站的教程

    python学习指南教程 180x270 - 7KB - JPEG 图灵程序设计丛书:Python基础教程 260x317 - 12KB - JPEG 跳一跳python使用教程 微信跳一跳pytho ...

最新文章

  1. C语言经典例27-利用递归逆序输出字符串
  2. C++获取Windows密码复杂度、密码有效期、密码锁定阀值等安全策略
  3. matlab slider不可移动,GUI界面能运行,但是_slider不能用,不能控制波长
  4. 【干货】普华永道:新形势下,企业如何进行数字化转型.pdf(附下载链接)
  5. 被坑的过来人告诉你,为什么数据中台永远都搞不成?
  6. linux系统expdp按表空间导出,expdp导出是全库吗
  7. 【存档】使用OllyDbg+ResHack+LordPE来修改EXE文件
  8. 使用minidwep-gtk
  9. NPOI导出真正的电子表格,支持 自定义多行表头(表头风格设置),支持多个sheet页面导出
  10. 转鼓式精密过滤器滤网
  11. 数据结构实验之大规模数据交并集
  12. 苹果截屏快捷键_几招Mac快捷键技巧
  13. xxl-job任务调度平台
  14. 如何做快手副业?怎么在快手上赚工资?快手发视频怎么赚钱?
  15. java转大数据方向如何走?
  16. 【亲测有效】win10修改电脑系统字体大小
  17. 中医是如何辩证出脾胃湿热的?
  18. [PTA]实验11-2-7 统计专业人数
  19. STM32F7 使用 FAL 配置片上FLASH
  20. 芋道源码 el-image 层级问题解决

热门文章

  1. 计算机的游戏功能,游戏同步器功能介绍、作用讲解及使用方法
  2. 航空公司客户流失分析
  3. 基于spark2.0文本分词+多分类模型
  4. 海南自贸区电信行业环境分析
  5. 帝国cms生成动态php栏目,帝国cms怎么实现页面自动生成html
  6. 语法长难句-----状语与状语从句
  7. Enter的使用计算机,电脑键盘上enter为什么叫回车键
  8. 制图中比例尺的一些问题
  9. 深圳率先立法:支持L3自动驾驶上路,凡公开道路皆可行
  10. 成果丰硕!SWORD 斯沃德惊艳亮相“第18届深圳名品家博会”