大家好,我是小五????

生活真是太苦了,需要找点快乐的精神食粮支撑社畜生活,听说糗事百科段子挺多,今天就来看一看!

糗事百科的段子栏目声称:幽默笑话大全__爆笑笑话__笑破你的肚子的搞笑段子,我们用 Python 来看看糗事百科的段子到底怎么样呢?

本文主要内容:

selenium爬取段子信息

这次我们利用selenium来实现翻页爬取段子信息!

翻页查看url变化规律:

https://www.qiushibaike.com/text/page/1/
https://www.qiushibaike.com/text/page/2/
https://www.qiushibaike.com/text/page/3/
https://www.qiushibaike.com/text/page/4/
https://www.qiushibaike.com/text/page/5/
https://www.qiushibaike.com/text/page/6/

思路:段子信息在 id 为 content 的 div 标签下的 div 下的第二个 div 标签下的 div 标签里,获取到所有 div 标签的内容,然后遍历,从中提取出每一条段子信息。

代码如下:

from selenium import webdriver
from time import sleep
import logging
import openpyxlwb = openpyxl.Workbook()
sheet = wb.active
sheet.append(['段子内容', '好笑数', '评论数'])
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')chrome_driver = r'D:\python\pycharm2020\chromedriver.exe'options = webdriver.ChromeOptions()
# 可以设置无头模式 不弹出浏览器
# options.add_argument("--headless")
# 关闭左上方 Chrome 正受到自动测试软件的控制的提示
options.add_experimental_option('useAutomationExtension', False)
options.add_experimental_option("excludeSwitches", ['enable-automation'])
browser = webdriver.Chrome(options=options, executable_path=chrome_driver)
# 可以设置绕过Webdriver的检测
browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})def get_data(page):     # 爬取数据函数url = f'https://www.qiushibaike.com/text/page/{page}/'browser.get(url)    # 访问目标urlbrowser.maximize_window()   # 最大化窗口sleep(1)    # 短暂休眠# Xpath定位到所有包含段子信息的div标签items = browser.find_elements_by_xpath('//*[@id="content"]/div/div[2]/div')# print(len(items))  一页25条段子# 遍历  获取每一条段子信息for item in items:con = item.find_element_by_xpath('.//a/div/span').text                   # 段子内容funny_num = item.find_element_by_xpath('.//div[2]/span[1]/i').text      # 好笑数comment_num = item.find_element_by_xpath('.//div[2]/span[2]/a/i').text   # 评论数sheet.append([con, funny_num, comment_num])logging.info([con, funny_num, comment_num])if __name__ == '__main__':for i in range(1, 14):    # 翻页爬取get_data(i)browser.quit()     # 关闭浏览器wb.save(filename='datas.xlsx')   # 保存数据

运行结果如下:

段子信息保存到了本地 Excel 里,结果如下:

绘制词云图

段子内容词云图可视化

import pandas as pd
import jieba
import collections
import re
from wordcloud import WordCloud
import matplotlib.pyplot as plt# 读取段子数据
datas = pd.read_excel('datas.xlsx')['段子内容']# 读取停用词数据
with open('stop_words.txt', encoding='utf-8') as f:con = f.read().split('\n')    # 得到每一行的停用词stop_words = set()for i in con:stop_words.add(i)result_list = []
for data in datas:# 文本预处理  去除一些无用的字符   只提取出中文出来new_data = re.findall('[\u4e00-\u9fa5]+', data, re.S)new_data = "/".join(new_data)# 文本分词seg_list_exact = jieba.cut(new_data, cut_all=True)# 去除停用词和单个词for word in seg_list_exact:if word not in stop_words and len(word) > 1:result_list.append(word)print(result_list)
# 筛选后统计
word_counts = collections.Counter(result_list)# 绘制词云
my_cloud = WordCloud(background_color='white',  # 设置背景颜色  默认是blackwidth=800, height=550,font_path='simhei.ttf',   # 设置字体  显示中文max_font_size=160,        # 设置字体最大值min_font_size=16,         # 设置字体最小值random_state=88           # 设置随机生成状态,即多少种配色方案
).generate_from_frequencies(word_counts)# 显示生成的词云图片
plt.imshow(my_cloud, interpolation='bilinear')
# 显示设置词云图中无坐标轴
plt.axis('off')
plt.show()

运行效果如下:

老婆、朋友、孩子、媳妇、同事、回家、老公等词云都是糗事百科段子内容里出现频率较高,都比较贴进生活,除此之外,"发现" 这个词也是出现频率较高的,看来有点东西。

散点图

分析评论数与好笑数之间关系,散点图可视化

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl# 读取数据
df = pd.read_excel('datas.xlsx')
funny_num, comment_num = df['好笑数'], df['评论数']
# 设置中文显示
mpl.rcParams['font.family'] = 'SimHei'
# 设置图形显示风格 ggplot
plt.style.use('ggplot')
# 设置大小  像素
plt.figure(figsize=(9, 6), dpi=100)# 绘制散点图
plt.scatter(comment_num, funny_num)
# 添加描述信息
plt.title('段子评论数与好笑数关系-散点图')
plt.xlabel('评论数')
plt.ylabel('好笑数')
plt.show()

运行效果如下:

在评论数小于 50 时,点分布密集,大概还有评论数多,好笑数多的关系,评论数大于50之后,点分布非常散乱。段子的评论数和好笑数实时在变,下面来看看我们那是爬取下来的段子里评论数最多、好笑数最多的分别讲的啥。

TOP级别段子

import pandas as pd# 读取数据
df = pd.read_excel('datas.xlsx')
# 降序排列后打印第一行  评论数最多
df1 = df.sort_values(by='评论数', ascending=False)
print(df1.values[0])

评论数最多的段子

import pandas as pd# 读取数据
df = pd.read_excel('datas.xlsx')
# 降序排列后打印第一行  好笑数最多
df1 = df.sort_values(by='好笑数', ascending=False)
print(df1.values[0])

好笑数最多的段子

emmm,幽默笑话大全__爆笑笑话__笑破你的肚子的搞笑段子,就这?

作者:叶庭云
CSDN:https://yetingyun.blog.csdn.net/本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。觉得文章对你有帮助、让你有所收获的话,期待你的点赞呀,不足之处,也可以在评论区多多指正。

????《Python最优化算法实战》此书以理论结合编程开发为原则,使用Python作为开发语言,讲解优化算法的原理和应用,详细介绍了Python基础、Gurobi 优化器、线性规划、整数规划、多目标优化、动态规划、图与网络分析、智能优化算法。点击下图可看详情/购买!????

感谢北京大学出版社支持!周日统一兑换!后台回复“读书会”进群,聊书聊币吹吹牛!后台回复“规则”轻松赚币,免费包邮带回家!

用Python爬取糗事百科段子,可视化后结果发现相关推荐

  1. Python爬取糗事百科段子+定时发送QQ邮箱

    文章目录 前言 1. 库导入及介绍 2. 获取网页源码 3. 提取需要的信息 4. 优化输出数据 5. 发送邮件 6. 实现定时发送 7. 源码 前言 学习Python爬虫也有段时间了,总想着搞点事做 ...

  2. Python爬取糗事百科段子

    Python爬取糗事百科段子 Python2.7.15 今天我们来爬取糗事百科的段子 一.获取糗事百科的网页源码 首先,打开浏览器,进入糗事百科,复制它的网址. 然后我们翻个页,可以看到,网址变成了这 ...

  3. 利用Python爬取糗事百科段子信息

    文章来源:公众号-智能化IT系统. 爬虫技术目前越来越流行,这里介绍一个爬虫的简单应用. 爬取的内容为糗事百科文字内容中的信息,如图所示: 爬取糗事百科文字35页的信息,通过手动浏览,以下为前四页的网 ...

  4. Python爬虫实战(1):爬取糗事百科段子

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  5. python爬虫经典段子_Python爬虫实战(1):爬取糗事百科段子

    大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...

  6. 转 Python爬虫实战一之爬取糗事百科段子

    静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...

  7. Python爬虫实战之爬取糗事百科段子

    Python爬虫实战之爬取糗事百科段子 完整代码地址:Python爬虫实战之爬取糗事百科段子 程序代码详解: Spider1-qiushibaike.py:爬取糗事百科的8小时最新页的段子.包含的信息 ...

  8. Python爬虫实战一之爬取糗事百科段子

    点我进入原文 另外, 中间遇到两个问题: 1. ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) 解 ...

  9. Python之爬取糗事百科段子实战

    "简说Python",选择"置顶/星标公众号" 福利干货,第一时间送达! 阅读本文大约6分钟,实战学习,老表建议你反复看,反复记,反复练. // 本文作者 王豪 ...

最新文章

  1. TensorFlow 图像数据预处理及可视化
  2. 洛谷 P2015 二叉苹果树
  3. hibernate继承关系映射方法(三)--每个具体类一张表TPC
  4. php form 上传_php+html5使用FormData对象提交表单及上传图片的方法
  5. 四种电荷分布,点电荷,体电荷,面电荷,线电荷
  6. 关于Java单例模式中懒汉式和饿汉式的两种类创建方法
  7. UILabel-IOS开发
  8. 使用windbg通过vtable找到优化后的this指针
  9. elementUI中table中自定义修改时间格式2020-10-26T10:00:00
  10. 支付宝小程序生成二维码
  11. 【Linux】如何设置静态IP地址
  12. Windows11右键桌面没新建
  13. linux中磁盘的管理(挂载,分区,配额,加密)
  14. 经典回忆Adobe Photoshop CS 2安装教程永久注册使用
  15. 小米有品多个商品主图、细节图怎样快速分类保存
  16. 混沌映射X(n+1) = r * Xn(1-Xn),给出python的画图代码,感兴趣可以跑一下。混沌科普请看https://www.bilibili.com/video/av86292156/
  17. bintray_与Bintray更好的开发人员对开发人员的协作
  18. 用Flink SQL流化市场数据2:盘中风险价值
  19. 关于WORD页码“第几页 共几页”出现误差的解决办法
  20. ☆☆☆☆☆ 电脑爱好者定制版v9.2

热门文章

  1. 过关检测-Lv3_ 数据结构
  2. 鹏程万里-----python开发中遇到的问题
  3. 荣耀平板x7儿童版和普通版区别哪个好
  4. 手把手演示Ngnix+Tomcat实现动静分离
  5. 夜空中最亮的星:慕课网新手学习指南_慕课手记
  6. 前端每日实战:41# 视频演示如何创作用纯 CSS 绘制一支栩栩如生的铅笔
  7. 干货!Android快速转战Kotlin教程,BAT大厂面试总结
  8. 科大奥瑞物理实验——干涉法测微小量
  9. 错误码302重定向问题
  10. 每日辣评:电动牙刷是个新风口?蒋凡是个幸运者?蔚来不降价?