爬取 Stackoverflow 100 万条问答并简单分析

2023-12-29 05:18

本文主要是介绍爬取 Stackoverflow 100 万条问答并简单分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

打开 stackoverflow 主页,在 questions 页面下选择按 vote 排序,爬取前 20000 页,每页将问题数量设置为 50,共 1m 条,(实际上本来是想爬完 13m 条的,但 1m 条后面问题基本上都只有 1 个或 0 个回答,那就选取前 1m 就好吧)

实际上用数据库去重后只有 999654 条问答信息

对爬取数据进行简单分析  

votes 分析

降序排列了 votes 数,生成折线图

 

Votes折线图

2k 后的问题的 votes 数基本上就已经在 400 以下了,接着后面的就基本上是贴地飞行了

votes 数最多 : Why is it faster to process a sorted array than an unsorted array?

votes 数的连续分布情况 

 

votes甘特图

可见最多的还是集中在 1-2K 之间,从 6k 开始基本上就断层了

具体数据

 

如果以 100 为分界线的话,会得到这样的一个饼图

 

大于 100 的连 %2 都不到

再来看看底层的数据

 

可见 votes 小于 20 的,数量高达 84m

看看总体的比例吧

 

answer分析

降序排列了 answers 数,生成折线图

 

很明显 3k 之后的 answers 数基本上就小于 20 了

answers 数最多: What is the best comment in source code you have ever encountered?

answer数的连续分布情况

 

answers甘特图

150 后也就断层了,实际上能达到这样的回答数极少

具体数据

 

大于 30 的确实少的可怜,看看总体情况

 

views 分析

降序排列了 views 数,生成折线图

 

views折线图

最高达到了 4.5m,100000 以后的基本上就不足 28000 了

views 数最多: How to undo last commit(s) in Git?

views 数的连续分布情况

 

views甘特图

具体数据

 

大部分问答的 views 数还是集中在 20000 以内

还是得看看总体分布

 

再看看 votes,views,answers 三者的散点图对应情况

votes - views

 

votes - answers

 

views - answers

 

views-answers散点图

总的来说,这三者对应关系类似于一个金字塔。三个图基本上都是左下角靠近原点的区域被填满,也就是说绝对大部分的问题的 votes,answers 和 views 都是属于最下层的。高质量活跃的问题是处于金字塔顶端的。三者的最高数好像也没特别明显的对应关系,且三者的最高数都不是同一个问题。

根据所有问题的 tags 提取出总量前 200 的关键词(前 50 条如下),第 1 名是 c#,python 排在第 5

 

 

这样看好像不太直观,所以就把它根据词频生成了词云

 

因为是用 Python 写的爬虫,所以重点来分析下 Python 类的问答

votes 数前 10

6162 : What does the “yield” keyword do in Python?

3529 : What is a metaclass in Python?

3098 : How do I check whether a file exists using Python?

3035 : Does Python have a ternary conditional operator?

2620 : Calling an external command in Python

2605 : What does ifname== “main”: do?

2194 : How to merge two Python dictionaries in a single expression?

2123 : Sort a Python dictionary by value

2058 : How to make a chain of function decorators?

1984 : How to check if a directory exists and create it if necessary?

answers 数前 10

191 : Hidden features of Python [closed]

87 : Best ways to teach a beginner to program? [closed]

55 : Favorite Django Tips & Features?

50 : How do you split a list into evenly sized chunks?

44 : Calling an external command in Python

43 : How can I represent an 'Enum' in Python?

38 : How to merge two Python dictionaries in a single expressions

38 : Finding local IP addresses using Python's stdlib

37 : Reverse a string in python without using reversed or [::-1]

37 : How do I check whether a file exists using Python?

views 数前 10

2121621 : Parse String to Float or Int

1905938 : Using global variables in a function other than the one that created them

1888666 : How do I check whether a file exists using Python?

1827126 : Calling an external command in Python

1699574 : Converting integer to string in Python?

1686230 : How do I read a file line-by-line into a list?

1682307 : Iterating over dictionaries using 'for' loops in Python

1569205 : How to get the size of a list

1554755 : How do I install pip on Windows?

1515505 : Finding the index of an item given a list containing it in Python

三者的前 10 中有 2 个问题是完全重叠的,分别是

How do I check whether a file exists using Python?

Calling an external command in Python

 

这篇关于爬取 Stackoverflow 100 万条问答并简单分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/548438

相关文章

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致