如何找出知乎的所有神回复
有时候看到神回复,感觉真是惊叹!先上几个看看
你小时候父母为了让你能够努力学习,都用过什么丧尽天良的方法? - 知乎
给了我这张脸
求职者在答应企业面试后,没有任何说明而爽约是否妥当? - 知乎
你们企业也经常说“回去等我们的电话吧”然后没有任何下文啊。
什么叫见过大世面 ? -知乎
能享受最好的,能承受最坏的
神回复总是言简意赅,吐槽精准,回答到位,甚至是让人忍俊不禁,如何找到知乎的所有神回复,有人说找那些投票多并且回答字数少的answer,对于一个计算机的同学,不可能就是这样一条条去翻一吧,让我们写一个爬虫,抓下知乎的问题,每个问题保留投票最高的回答。首先需要一个得到问题列表,这里列表可以在http://www.zhihu.com/log/questions找到,爬问题列表的代码如下:
def getQuestions(start,offset='20'):#cookies = urllib2.HTTPCookieProcessor()#opener = urllib2.build_opener(cookies)#urllib2.install_opener(opener) header = {"Accept":"*/*","Accept-Encoding":"gbk,utf-8,gzip,deflate,sdch","Accept-Language":"zh-CN,zh;q=0.8,en;q=0.6","Connection":"keep-alive","Content-Length":"64","Content-Type":"application/x-www-form-urlencoded; charset=utf-8",'Cookie':'*************'"Host":"www.zhihu.com","Origin":"http://www.zhihu.com","Referer":"http://www.zhihu.com/log/questions","User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36","X-Requested-With":"XMLHttpRequest"}parms = {'start':start,'offset':offset,'_xsrf':'*************'}url = 'http://www.zhihu.com/log/questions'req = urllib2.Request(url,headers=header,data=urllib.urlencode(parms))content = urllib2.urlopen( req ).read()html = gzip.GzipFile(fileobj = cStringIO.StringIO(content)).read()html = eval(html)['msg'][1]pageSoup = BeautifulSoup(html)questions = []items = pageSoup.find_all('div',{'class':'zm-item'})for item in items:url = item.find_all('a',{'target':'_blank'})[0].get('href').rsplit('/',1)[1]questions.append(url)lastId = items[-1].get('id').split('-')[1]return questions,lastId
得到问题列表后再抓取每个问题投票最高的回复,代码如下:
def getArticle(url):page = getPage(url)pageSoup = BeautifulSoup(page)title = str(pageSoup.title).replace('<title>','').replace('</title>','').strip()item = pageSoup.find_all('div',{'class':'zm-item-answer'})if item is None or len(item) == 0:return Noneanwser = item[0].find('div',{'class':'fixed-summary zm-editable-content clearfix'}).get_text().strip()vote = item[0].find('div',{'class':'zm-item-vote-info '}).get('data-votecount').strip()anwser = formatStr(anwser)ans_len = len(anwser)if ans_len > 100:anwser = anwser[0:100]title = formatStr(title)out = [title, anwser, str(ans_len),vote,url]return out
现在我们得到了每个问题的标题、投票最高的回复、问题链接。接下来我们需要把“回复短投票高”这样的规则进行量化计算,很明显一个回复是神回复的可能性与投票数成正比,与回复文本的长度成反比,但实现上,我们需要注意一些细节,比如有些神配图,一言不语,文本长度为0,所以需要平滑一些,另外回复越段应该越精辟,于是我定义了如下公式:$$Score=\frac{vote}{5+\frac{answer\_len^2}{10}}$$
这个公式整体来说,认为是神回复的可能与投票数成正比,与回复的长度的平方成反比,加5是为了平滑哪些神配图。
爬了一个晚上,爬取了2万个问题,然后按Score计算,取Score最大的top 1000,欣赏神回复,请移步至github。
问题爬得太少,更多的精辟神回复没有找出来。
转载请注明出处:http://www.cnblogs.com/fengfenggirl/
转载于:https://www.cnblogs.com/fengfenggirl/p/zhihu_shenhuifu.html
如何找出知乎的所有神回复相关推荐
- 已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。
已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者. 答案: int max(int a,int b) { return (a+b+abs(a-b))/2; } ...
- C语言试题五十一之已知学生的记录是由学号和学习成绩构成,n名学生的数据已存入s结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。
1. 题目 请编写一个函数void function(Student a[], int n, Student *s),其功能时:已知学生的记录是由学号和学习成绩构成,n名学生的数据已存入s结构体数组中 ...
- 现在有一个整数数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数...
现在有一个整数数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数. 方法1:Hash链表 方法2:使用两个变量A和B,其中A存储某个数组中的数,B用来计数.开始时将B初始化为0 ...
- python求近似值_python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配...
已知一个元素,在一个list中找出相似的元素 使用场景: 已知一个其它来源的字符串, 它有可能是不完全与我数据库中相应的字符串匹配的,因此,我需要将其转为适合我数据库中的字符串 使用场景太绕了, 直接 ...
- C语言编程题—结构体—设计程序,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数 fun:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分
4 C语言编程题--结构体 **设计程序,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中.请编写函数 fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有 ...
- C语言编程>第十二周 ③ 已知学生的记录由学号和学习成绩构成,M名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数。
已知学生的记录由学号和学习成绩构成,M名学生的数据已存入a结构体数组中.请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分).已给出函数的首部,请完成该函 ...
- 假币问题:有n枚硬币,其中有一枚是假币,已知假币的重量较轻。现只有一个天平,要求用尽量少的比较次数找出这枚假币。
2017年软件设计师上半场下午题目 [说明] 假币问题:有n枚硬币,其中有一枚是假币,已知假币的重量较轻.现只有一个天平,要求用尽量少的比较次数找出这枚假币. [分析问题] 将n枚硬币分成相等的两部分 ...
- python 已知一个字符,在一个list中找出近似值或相似值, 模糊匹配
已知一个元素,在一个list中找出相似的元素 使用场景: 已知一个其它来源的字符串, 它有可能是不完全与我数据库中相应的字符串匹配的,因此,我需要将其转为适合我数据库中的字符串 使用场景太绕了, 直接 ...
- 知哈希算法——找出相似的图片
知哈希算法--找出相似的图片 感知哈希算法--找出相似的图片 - Create Chen - 博客园 知哈希算法--找出相似的图片 Google 图片搜索功能 在谷歌图片搜索中, 用户可以上传一张图片 ...
最新文章
- java正则表达式及api_JAVA常用API:正则表达式regular expression
- IPV6地址校验(java)
- Openstack入门篇(十一)之neutron服务(控制节点)的部署与测试
- Macbook换SSD硬盘 备份OS、Win10双系统 完全攻略
- CTF--Do you like xml
- matlab的kron函数(kronecker乘积)
- linux第一周作业
- 浅谈Spring @Order注解的使用
- Mybatis中利用PageHelp分页功能的实现
- 支付宝小程序、百度小程序、微信小程序、今日头条小程序技术分析
- 常见的网络攻击方法与防范措施
- Twitterrific for Mac(Twitter客户端)
- 面试技巧-面试官的考题
- 固态硬盘是什么接口_固态硬盘那么多接口该怎么选?今天就和大家聊聊
- 如何修改PDF中图片的大小尺寸
- 蓄电池内阻测试仪分析软件,进口蓄电池内阻测试仪
- 链接数据库明明有值,但是取到的是空
- 用word2013发布csdn博客
- JS 按字符串长度切割字符串(支持汉字占2个长度)
- Python异步 asyncio 异步文件下载