Python爬虫(urllib2+bs4)数据采集:分析找出百度贴吧谁是水贴王
问题描述
对于这个题目, 书上给出了三种思路 第一种 : 先遍历一次所有的帖子, 统计出 <发帖人, 发帖次数>, 然后在遍历一次映射, 找出发帖次数超过一半的发帖人 即为所求 。
第二种 : 将所有的id[包括重复]进行排序, 然后最中间的id即为所求
第三种 : 逐渐减小问题的规模的算法, 每一次删除两个不同的id, 那么剩下的id列表中, 水贴王的出现次数必然也满足超过一半[因为, 如果删除的两个id中没有水贴王id, 水贴王id出现的次数必然超过一半 [x/ sum => x/ sum-2], 如果删除的两个id中有一个为水贴王id, 则水贴王id出现的次数仍然会超过一半[x/ sum => x - 1/ sum - 2] ] 当然上面的思路还有一个条件就是 : 2 * x > sum [这个这个对于, 删除两个id中水贴王id出现一次可是必杀技, 证明不等式是靠他的。
这里要分析谁是水贴王,首先要收集发帖和发帖者的数据。
这里测试百度贴吧的李毅吧的前100页:
大概花费两分钟时间,得到一个5000行的csv文件,可以用excel打开查看。
sorted函数参数: sorted(iterable[,cmp,[,key[,reverse=True]]]) 作用:Return a new sorted list from the items in iterable. 第一个参数是一个iterable,返回值是一个对iterable中元素进行排序后的列表(list)。
可选的参数有三个,cmp、key和reverse。 1)cmp指定一个定制的比较函数,这个函数接收两个参数(iterable的元素),如果第一个参数小于第二个参数,返回一个负数;如果第一个参数等于第二个参数,返回零;如果第一个参数大于第二个参数,返回一个正数。默认值为None。
2)key指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None。
3)reverse是一个布尔值。如果设置为True,列表元素将被倒序排列。 通常来说,key和reverse比一个等价的cmp函数处理速度要快。这是因为对于每个列表元素,cmp都会被调用多次,而key和reverse只被调用一次。
返回一个list:输出
for val in list2:
print val[0],val[1]
分析得出:发帖最多红颜知己840
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SpringBoot源码解析(十二)- Autowired是如何注入的
- 项目要实现多数据源动态切换,咋搞?
- 这一次,带你全面了解锁机制!
- GitHub标星1w+超牛的微服务项目,开发脚手架
- Redis中hash、set、zset的底层数据结构原理
- Redis中string、list的底层数据结构原理
- Redis中字符串的表示
- Redis分布式锁背后的原理
- 解析Transformer模型
- 这5个常问的Redis面试题你答得出来吗?(详细剖析)
- 性能最佳实践:MongoDB索引
- Python基本数据类型-list-tuple-dict-set
- 深度学习应用的服务端部署
- MongoDB中的CURD操作
- 高可用的Redis主从复制集群,从理论到实践