用Python爬取糗事百科段子,可视化后结果发现
大家好,我是小五????
生活真是太苦了,需要找点快乐的精神食粮支撑社畜生活,听说糗事百科段子挺多,今天就来看一看!
糗事百科的段子栏目声称:幽默笑话大全__爆笑笑话__笑破你的肚子的搞笑段子,我们用 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爬取糗事百科段子,可视化后结果发现相关推荐
- Python爬取糗事百科段子+定时发送QQ邮箱
文章目录 前言 1. 库导入及介绍 2. 获取网页源码 3. 提取需要的信息 4. 优化输出数据 5. 发送邮件 6. 实现定时发送 7. 源码 前言 学习Python爬虫也有段时间了,总想着搞点事做 ...
- Python爬取糗事百科段子
Python爬取糗事百科段子 Python2.7.15 今天我们来爬取糗事百科的段子 一.获取糗事百科的网页源码 首先,打开浏览器,进入糗事百科,复制它的网址. 然后我们翻个页,可以看到,网址变成了这 ...
- 利用Python爬取糗事百科段子信息
文章来源:公众号-智能化IT系统. 爬虫技术目前越来越流行,这里介绍一个爬虫的简单应用. 爬取的内容为糗事百科文字内容中的信息,如图所示: 爬取糗事百科文字35页的信息,通过手动浏览,以下为前四页的网 ...
- Python爬虫实战(1):爬取糗事百科段子
Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...
- python爬虫经典段子_Python爬虫实战(1):爬取糗事百科段子
大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...
- 转 Python爬虫实战一之爬取糗事百科段子
静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...
- Python爬虫实战之爬取糗事百科段子
Python爬虫实战之爬取糗事百科段子 完整代码地址:Python爬虫实战之爬取糗事百科段子 程序代码详解: Spider1-qiushibaike.py:爬取糗事百科的8小时最新页的段子.包含的信息 ...
- Python爬虫实战一之爬取糗事百科段子
点我进入原文 另外, 中间遇到两个问题: 1. ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) 解 ...
- Python之爬取糗事百科段子实战
"简说Python",选择"置顶/星标公众号" 福利干货,第一时间送达! 阅读本文大约6分钟,实战学习,老表建议你反复看,反复记,反复练. // 本文作者 王豪 ...
最新文章
- TensorFlow 图像数据预处理及可视化
- 洛谷 P2015 二叉苹果树
- hibernate继承关系映射方法(三)--每个具体类一张表TPC
- php form 上传_php+html5使用FormData对象提交表单及上传图片的方法
- 四种电荷分布,点电荷,体电荷,面电荷,线电荷
- 关于Java单例模式中懒汉式和饿汉式的两种类创建方法
- UILabel-IOS开发
- 使用windbg通过vtable找到优化后的this指针
- elementUI中table中自定义修改时间格式2020-10-26T10:00:00
- 支付宝小程序生成二维码
- 【Linux】如何设置静态IP地址
- Windows11右键桌面没新建
- linux中磁盘的管理(挂载,分区,配额,加密)
- 经典回忆Adobe Photoshop CS 2安装教程永久注册使用
- 小米有品多个商品主图、细节图怎样快速分类保存
- 混沌映射X(n+1) = r * Xn(1-Xn),给出python的画图代码,感兴趣可以跑一下。混沌科普请看https://www.bilibili.com/video/av86292156/
- bintray_与Bintray更好的开发人员对开发人员的协作
- 用Flink SQL流化市场数据2:盘中风险价值
- 关于WORD页码“第几页 共几页”出现误差的解决办法
- ☆☆☆☆☆ 电脑爱好者定制版v9.2