如何获取大名鼎鼎的Hacker News信息,40行Python轻松搞定!

点击上方“菜鸟学Python”,选“星标”公众号

重磅干货,第一时间到达

Hacker News译为中文为黑客的新闻,看到黑客 这个词语,总带着一丝神秘,相信每个程序员都有成为一名黑客的梦想,小编当然也有这个梦想。

Hacker News 是一家关于计算机黑客和创业公司的社会化新闻网站,由硅谷教父保罗·格雷厄姆的创业孵化器 Y Combinator 创建。在程序员圈,尤其是技术大神圈里,非常流行,里面有很多第一手的技术圈资料和新鲜八卦趣事,号称程序员圈的"微博"。今天小编用Python带大家40行Python代码搞定!

01 Hacker News API介绍

在探索Hacker News的过程中,小编在GitHub上发现一个关于该网站的API接口,该接口与Firebase合作,可以实时地提供公共的Hacker News数据,利用该接口,可以快速爬取网站数据。

该API提供了数据接口https://hacker-news.firebaseio.com/v0/其中V0是API的版本号,所有信息都是基于这个接口添加后缀进行。下面将进行展示。

信息接口

在接口后输入/v0/item/id.json,其中id指定信息的唯一id,便可访问该信息的相关属性。

每条信息包含以下属性:

用户信息

在接口后面接入/v0/user/user.json,便可访问用户消息

每条信息包含以下属性:


02.接口介绍

API中还提供了查看实时数据的各种接口,方便大家调用,下面小编给大家展示2个最常用的接口。

比如查看最新的文章

在接口后面接入/v0/user/maxitem.json,便可查看最新的文章id

比如查看最热门的故事
  • 在接口后面接入/v0/user/topstories.json,便可查看最热门的500个故事。

  • 在接口后面接入/v0/user/newstories.json,便可查看最新的500个故事。

  • 在接口后面接入/v0/user/beststories.json,便可查看最好的500个故事。


03 API的调用

小编这里调用/v0/topstories.json,查看Hacker News中最热门的信息id,再根据id,在调用信息接口/v0/item/<id>.json获取该信息的相关介绍,下面展示其中的核心爬虫代码:

然后对于每一个id的具体的文章信息,用gethtml进行解析

上面便是获取Hacker News中top500的文章的代码。为了解决requests对网页读取等待时间过长而卡住,小编这里使用了gethtml函数,再等待5秒后无响应,重新进行请求,5次之后仍没有结果则跳过。

我们看一下爬取的信息:

上图展示的小编爬到的相关信息,接下来小编就带大家一起看一看所有信息中哪一种类型的信息最受欢迎。在小编爬取的数据中共有449条有效数据,其中种类story占比99.78%,job为0.22%,可见story是haceker们最喜欢的类型。

接下来小编在首页中文章数量最多的作者进行了展示,todsacerdoti、rbanffy、bookofjoe、AndrewBissell、Reedx是排名前五的作者,不知道有没有大家喜欢的作者呢。

如果大家对Hacker感兴趣的话,可以去该网站看看Hacker们喜欢的文章,也许你会有新的发现哦!欢迎在留言区点评,记得给个三连哦!

我是菜鸟哥,一个学习Python的菜鸟!

近期八大热门:

发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片!
盗墓热再起!我爬取了6万条《重启之极海听雷》的评论,发现了这些秘密
用Python一键生成炫酷九宫格图片,火了朋友圈
菜鸟也疯狂!8分钟用Python做一个酷炫的家庭随手记
Github获8300星!用Python开发的一个命令行的网易云音乐
一道Python面试题,硬是没憋出来,最后憋出一身汗!卧槽!Pdf转Word用Python轻松搞定!教你6招,不错的Python代码技巧!
由菜鸟学Python原班人马打造的公众号:程序员GitHub,现已正式上线!接下来我们将会在该公众号上,为大家分享GitHub上优质的开源神器,程序员圈的趣事,坚持每天一篇原创文章的输出,感兴趣的小伙伴可以关注一下哈!

我们在B站上录制了大量的视频,欢迎大家交流学习

1). 花木兰到底好看不,我用Python爬取上万条评论

2). 80行Python代码一键轻松把Pdf转word

3). 用Python一键把图片转漫画

4). 再见付费软件,我用70行Python搞定

5). 用Python分析“青春有你2”

6). 用Python三步制作短视频

7). 用Python实现一个弹球游戏

8). 10行代码实现美图秀秀

9). 50行代码用Python批量做海量小姐姐素描图

10).用Python做一个动态语言排行榜

11).我用Python集齐五福

点这里,直达我们的B站大本营
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Hacker News本身也是开源的,为什么还要做iNews?初衷是什么? 赵戈戈:Hacker News从功能和内容本身上来说是个很好的应用,我们最初也是想从开源入手 —— 直接使用,不过HN是甚于Arch实现的,我们对Arch 并不熟悉,所以决定自己写,以便功能扩展。 关于初衷。从产品上讲,要从我和搭档 @sofish说起。我们都是苹果的忠实用户,经常会互相分享一些应用,久而久之也就萌发了这个念头:做一个分享苹果新闻和应用的社区,对于苹果在中国这几年设备数据大增,应该有很多人跟我们有同样的需求,于是就开始做了;从技术上讲,它的结构类似于Hacker News,而外观应该更漂亮,并且要适合移动应用阅读。最终我们动手实现了它,并上线了http://inews.io。虽然现在还没有完全做到期望值,但最起码迈出了第一步;从程序本身来讲,上线了一段时间后,很多朋友看到都希望在自己站点上使用,后来越来越多的人寻求使用并提供建议,基于我们对开源的开放态度,最终决定放出来给大家使用。 iNews 在技术上是如何实现的? 赵戈戈:iNews基于PHP,使用Mysql存储,phpmig进数据库版本管理。框架上,后端采用了我自己写的Restful框架 Pagon来开发,前端使用了@sofish的 typo.css, validator.js等开源库。第一版本上线前我们希望从最基本的功能开始,上线 > 快速迭代。整个开发过程非常快,只用了一天半的时间就实现了。后续做了些优化和修复就上线了。在服务上我们也采用一些不错的第三方服务:用SendGrid发送邮件,用NewRelic做应用监控,用Dropbox做数据库备份等等。 这里再补充一点:从技术选型上,技术适应产品才是最重要的,不要强迫自己使用的是PHP 、Node或者Ruby等。选择基于PHP的Pagon这个框架,让我们可以更快速实现iNews.io的功能。 总共有几名开发人员?这种UGC项目的技术难点和重点是什么?你们是如何解决的? 赵戈戈:只有我和搭档@sofish两个人。开源之后应该会陆续会有一些同学加入,实际上目前已经有一些同学在一起开发。对于iNews来说,技术上基本没太多难点,主要有几个点需要关注:安全性、性能、易用、适配(Responsive)、社会化接入等。 安全性主要是XSS和数据库过滤。Pagon框架已实现自动XSS处理的,只要开启了safe_query 的选项,在模板渲染的过程中会自动做XSS过滤。数据库方面使用的一个paris库,它本身使用PDO来处理SQL,PDO本身会对数据进转义处理再存入。 性能其实是个很泛的话题,iNews.io数据样本太少,还不好看出性能到底如何,就目前的平均输出时间来看只有30ms左右,前端方面使用Google Pagespeed测试是:移动,85/100;桌面 95/100;这比很多网站分数都要高。高性能跟逻辑简单和实现方法都有关系,如果需要很好的性能需要考虑到方方面面,我这里先简单说PHP的基本观点:代码越简单越好,不要使用太多魔术方法,尽量使用PHP 内置的方法,使用最新的稳定版5.4,服务器安装APC扩展,使用Nginx FPM模式运PHP。其次Pagon框架本身开发过程也对性能有很高的要求,所以在代码质量和性能上也下了不少功夫,这也是应用性能的基础。在数据库方面只做了索引优化来达到更好的查询性能。性能还涉及到很多,做为一个刚初出茅庐的应用来说还没有足够完善也不需要把性能放到第一位,在这里就先不说还没有做到的。 而在前端,跨终端适配应该是现代应用最应该做的支持。@sofish 在这一块有很多的研究,所以我们的 iNews 是可以在移动设备上很好的访问的。 社会化接入这块其实也并不是什么难点,只需要有很好的封装就可以解决问题,重新开发代价稍大。我觉得 PHP 第三方认证的库都做的很一般,但还是有个opauth的第三方认证库,封装有点凌乱,但凑合着能用。如果是Node的话,这一块有很多很不错的库,比如everyauth和passport,如果PHP社区可以像Node社区一样活跃那问题就可以更好解决了。 iNews在内容推荐上采用了什么样的机制或算法? 赵戈戈:iNews最初是参照Hacker News的算法来做的,后期将评论也加入了权重。因为觉得对于这种社区来说,评论是很重要的一块,评论代表着交流,有交流就证明内容的价值有可能存在,如果只有“顶”才算权重,那激烈的讨论可能会显得不太公平。但若是每个评论的权重和每个“顶”的权重一样,又显得不太合理,“顶”是认可的意思,评论是交流的意思,所以评论应该稍低于“顶”的权重,这样做才比较合理。最终是这么来做的。 iNews 有哪些创新性的东西? 赵戈戈:如果说创新的话,我想提一个设计模式:MOVE。应该有不少人看到过过这个设计模式,摒弃了MVC传统老套的做法。采用了Model、Operator、View 和 Event 来梳理编码流程。其中 Operator可能是大家最不解的一个地方,其实也是最具创新意义的地方,Opeartor从字面意思来理解就是:操作器。Opeartor的出现摈弃了控制器重用性和代码混杂的局面,将每个操作都拆分成一个独立的操作器,组织成一个树形的流程来封装使用,对于编码流程来说是一个梳理。iNews里面有一些对操作器的浅显理解和实现,但并没有完全使用操作器来做,还是主要使用MVC作为基础,这种尝试会慢慢变得成熟,并可能逐步完全采用这种模式来开发。 标签:iNews
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值