资讯专栏INFORMATION COLUMN

知乎书籍排行网站——建站始末

stormzhang / 1692人阅读

摘要:一时心血来潮,于是当时想,如果拿来分析知乎这个网站,会有什么效果呢。知乎并没有公开,只能采取爬虫手段。如此,大概率会触发知乎反爬虫系统,所以采取以下方法来回避这个问题代理池。但是,很多情况下知乎还是能通过你的请求得到你的真实。。

网站地址books.bigfacewo.com
最近工作去了,感觉人也变懒了,一直想写一些关于这个网站东西分享出来。慢慢写吧。
前情提要:对于大神来说,这个网站使用的技术都是小儿科啦。不过,我想还是有朋友有这个需求的。这篇文章的内容不一定都是准确的,用的方法也不是最好的,不过我始终相信一句话——兼听者明,偏听则暗。所以看这篇文章的朋友,希望你能带入自己的思考,同时更希望能够带给你一些东西。

好了,废话不多说了。


网站是参考了一个外文网站。一时心血来潮,于是当时想,如果拿来分析知乎这个网站,会有什么效果呢。
有一些不一样的地方是stackoverflow这个网站开放了api,所以拿到数据是很方便的。知乎并没有公开api,只能采取爬虫手段。
所以,很自然地,流程大致分为四个步骤:

数据获取

数据分析

建站数据准备

建站


一、数据获取

写爬虫要考虑的一些问题:

可靠性。当遇到程序错误或者一些不可抗力因素如断电等造成的程序停止,如何从停止的时刻开始继续爬取;或者说得设计一个状态,该状态保存了已经抓取数据的相关信息,下次抓取任务会忽略已经抓取的信息(这不是废话嘛,哈哈),还有一些需要考虑的问题:

模拟登陆(后续填坑)

速度。假设一秒钟爬取1条数据,那么600条一个小时,6000000条就需要10000个小时,大概要一年多。这是不能接受的一个速度,单机多线程抓取10条每秒还是可以接受的。如此,大概率会触发知乎反爬虫系统,所以采取以下方法来回避这个问题:

代理池 。可以找一些免费的代理网站,如西刺,爬一些ip下来用,当然这需要设计一个系统或服务,该服务不断地去获取代理ip,然后验证是否可用,再存起来备用。当遇到爬虫验证页面时应该将该ip移除或者标记为暂时不可用。但是,很多情况下知乎还是能通过你的请求得到你的真实ip。

Cookie。

重新拨号。这个简单而且非常可行,如果是单条宽带,重新拨号会造成短时间的爬取停止。

优先级。其实,并不是每条数据都需要的或者说包含了有效信息,如果对要抓取的数据有一定了解,那么我们可以提取一些特征,优先抓取这部分数据。事实上我也这么做的,这样能够最大限度地节省时间。

当我接触Python之后,就决定用它来写爬虫了,因为实在是太方便了!


二、数据分析

从数据中提取书籍信息,有两种办法:

提取书名号中的内容。

先建立书籍信息库,再做匹配。

第二种办法可以做到更精确,但是建立书籍数据库也颇费时间。所以采用了第一种方法。实际上知乎上只要提到书籍几乎都会带上书名号,或者有一些政治隐喻不能提的,当然我们也不需要这类书的信息。

同一本书在每个回答中最多只能出现一次,将数据汇总后,得到“标签:书名:提到次数”的这样的一个文本。

三、建站数据准备

按照我的需求,应该建立以下三张表:

标签表:存放该书所对应标签,多对多的关系。

书籍表:存放书籍的信息,以及该书的提到总次数。

标签-书籍对应关系表:存放该标签下该书籍被提到的次数信息。

将步骤二得到的文本,导入到数据库中去。

为了得到书籍的详细信息,此时还需要将书名放到一些书籍网站,如我去了亚马逊进行搜索,然后将得到的信息写到数据库中去,原理同步骤一。当然,这里也引入了一些误差,由于是模糊匹配,导致一些书籍的信息错误(后面人工审核了一部分数据)。

到此,建站数据准备好了。

四、建站

建站就比较简单了,后台用Restful风格把接口写好,前端就可以使用了。
使用Vue构建了一版单页应用,但是搜索引擎不能抓取,于是又做了一版ssr的,使用了Nuxt.js。

网站差不多4天就写好了,大部分时间都花在了步骤一和步骤二上了。所以,如果你也想做一个类似网站,不妨先从写爬虫开始。


还想做的事情:

情感分析。一本书被提到,其评价有可能是正面的也有可能是负面的,希望加入一个情感分析的功能,然后加权到最终结果。

提高书籍信息准确度。 本来可以申请亚马逊或者淘宝之类的网站的api,通过api可以获取商品数据,可以利用来查询书籍信息,但是申请很麻烦,最后还是采用了爬虫+人工的方式。

移动端优化。 目前网站的排版在移动端表现不是太好。


总结

综上,写的比较简略,当然,不具备直接可操作性,因为不涉及到具体的代码。但是,我想表达的是,整个流程就在这里,你可以用你熟悉的编程语言或者工具来实现它,就算不会Python,你仍然可以利用Java、C#来写爬虫或者做分析;还有一个重要的原则是,尽量复用别人的东西,如python爬虫相关的库功能非常强大,直接拿来用就可以,同理,使用Java,你需要去调查该语言相关的库,哪些能实现你的目的,然后去使用它吧。
另外,一些省略的内容,将后续补充。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/51777.html

相关文章

  • 知乎书籍排行网站——建站始末

    摘要:一时心血来潮,于是当时想,如果拿来分析知乎这个网站,会有什么效果呢。知乎并没有公开,只能采取爬虫手段。如此,大概率会触发知乎反爬虫系统,所以采取以下方法来回避这个问题代理池。但是,很多情况下知乎还是能通过你的请求得到你的真实。。 网站地址books.bigfacewo.com最近工作去了,感觉人也变懒了,一直想写一些关于这个网站东西分享出来。慢慢写吧。前情提要:对于大神来说,这个网站使...

    Tony 评论0 收藏0
  • 知乎书籍排行网站——建站始末

    摘要:一时心血来潮,于是当时想,如果拿来分析知乎这个网站,会有什么效果呢。知乎并没有公开,只能采取爬虫手段。如此,大概率会触发知乎反爬虫系统,所以采取以下方法来回避这个问题代理池。但是,很多情况下知乎还是能通过你的请求得到你的真实。。 网站地址books.bigfacewo.com最近工作去了,感觉人也变懒了,一直想写一些关于这个网站东西分享出来。慢慢写吧。前情提要:对于大神来说,这个网站使...

    feng409 评论0 收藏0
  • 知乎书籍排行网站——建站始末

    摘要:一时心血来潮,于是当时想,如果拿来分析知乎这个网站,会有什么效果呢。知乎并没有公开,只能采取爬虫手段。如此,大概率会触发知乎反爬虫系统,所以采取以下方法来回避这个问题代理池。但是,很多情况下知乎还是能通过你的请求得到你的真实。。 网站地址books.bigfacewo.com最近工作去了,感觉人也变懒了,一直想写一些关于这个网站东西分享出来。慢慢写吧。前情提要:对于大神来说,这个网站使...

    sugarmo 评论0 收藏0
  • 知乎书籍被提到次数排行

    摘要:我们分析了大量知乎精华回答,将里面被提到的书籍提取出来,按照被提到次数做成了一个书籍推荐网站。网站内容对程序员较为友好。 我们分析了大量知乎精华回答,将里面被提到的书籍提取出来,按照被提到次数做成了一个书籍推荐网站。被提到即是价值。网站内容对程序员较为友好。地址:http://books.bigfacewo.com

    Little_XM 评论0 收藏0
  • 知乎书籍被提到次数排行

    摘要:我们分析了大量知乎精华回答,将里面被提到的书籍提取出来,按照被提到次数做成了一个书籍推荐网站。网站内容对程序员较为友好。 我们分析了大量知乎精华回答,将里面被提到的书籍提取出来,按照被提到次数做成了一个书籍推荐网站。被提到即是价值。网站内容对程序员较为友好。地址:http://books.bigfacewo.com

    dongfangyiyu 评论0 收藏0

发表评论

0条评论

stormzhang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<