前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python爬虫(urllib2+bs4)数据采集:分析找出百度贴吧谁是水贴王

Python爬虫(urllib2+bs4)数据采集:分析找出百度贴吧谁是水贴王

作者头像
机器学习AI算法工程
发布2018-03-14 16:35:09
6320
发布2018-03-14 16:35:09
举报

问题描述

对于这个题目, 书上给出了三种思路 第一种 : 先遍历一次所有的帖子, 统计出 <发帖人, 发帖次数>, 然后在遍历一次映射, 找出发帖次数超过一半的发帖人 即为所求 。

第二种 : 将所有的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:输出

代码语言:text
复制
for val in list2:
    print val[0],val[1]

分析得出:发帖最多红颜知己840

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据挖掘DT数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档