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

本文分享自微信公众号 - 大数据挖掘DT数据分析(datadw)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-12-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逢魔安全实验室

UAF Writeup - pwnable.kr

0x00 UAF — pwnable.kr是一个韩国的CTF练习的网站,有很多经典的CTF题目供爱好者练习。 UAF(Use After Free)释放后重用...

39360
来自专栏来自地球男人的部落格

Python常见用法汇总

此篇主要记录写python遇到的一些常见用法。 1. 正则表达式匹配中文 当我们使用正则表达式匹配字符串中的中文中文时会发现字符串明明有目标串却不能匹配的情况 ...

26250
来自专栏程序你好

.Net CSharp语言中When关键字的用法

c# 6引入了when关键字。when关键字是通过某些特定标准来过滤catch块中的异常的一种方法。后来在c# 7中扩展到case语句。我们将介绍如何在异常处理...

14100
来自专栏数据分析

char varchar nchar nvarcharar到底有多大区别

首先说明下,ASP.NET MVC系列还在龟速翻译中。 工作好多年,基础知识甚是薄弱,决定以后在coding(cv操作)的时候尽量多google下,然后总结下来...

33660
来自专栏人工智能LeadAI

值得玩味儿的14个Python编程小技巧

最近的工作中经常使用Python编写一些基本解决一些NLP的小问题,在自己的工作日记里面也记录了不少的python编程中常用的小"Trick",看到最近大家学习...

11610
来自专栏Laoqi's Linux运维专列

python3–python模块+(复习)

45170
来自专栏iOS技术杂谈

Java8 Lambda表达式与Stream API (二): Stream API的使用你要知道的Java8 匿名内部类、函数式接口、lambda表达式与Stream API都在这里

你要知道的Java8 匿名内部类、函数式接口、lambda表达式与Stream API都在这里 转载请注明出处 https://cloud.tencent.co...

56160
来自专栏测试开发架构之路

C语言之预处理命令与用typedef命名已有类型

 预处理命令 主要是改进程序设计环境,以提高编程效率,不属于c语言本身的组成部分,不能直接对它们进行编译,必须在对 程序编译之前,先对程序中的这些特殊命令进行...

43390
来自专栏C/C++基础

C++中的作用域与生命周期

Pascal之父Nicklaus Wirth曾经提出一个公式,展示出了程序的本质:程序=算法+数据结构。后人又给出一个公式与之遥相呼应:软件=程序+文档。这两个...

9420
来自专栏算法修养

HDU 5634 Rikka with Phi (线段树)

Problem Description Rikka and Yuta are interested in Phi function (which is kn...

320100

扫码关注云+社区

领取腾讯云代金券