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

news/2024/5/16 11:28:43/文章来源:https://blog.csdn.net/weixin_33834910/article/details/88916677

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

好了,废话不多说了。


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

  1. 数据获取
  2. 数据分析
  3. 建站数据准备
  4. 建站

一、数据获取

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

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

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

    • 代理池 。可以找一些免费的代理网站,如西刺,爬一些ip下来用,当然这需要设计一个系统或服务,该服务不断地去获取代理ip,然后验证是否可用,再存起来备用。当遇到爬虫验证页面时应该将该ip移除或者标记为暂时不可用。但是,很多情况下知乎还是能通过你的请求得到你的真实ip。
    • Cookie。
    • 重新拨号。这个简单而且非常可行,如果是单条宽带,重新拨号会造成短时间的爬取停止。
  3. 优先级。其实,并不是每条数据都需要的或者说包含了有效信息,如果对要抓取的数据有一定了解,那么我们可以提取一些特征,优先抓取这部分数据。事实上我也这么做的,这样能够最大限度地节省时间。

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


二、数据分析

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

  1. 提取书名号中的内容。
  2. 先建立书籍信息库,再做匹配。

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

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

三、建站数据准备

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

  1. 标签表:存放该书所对应标签,多对多的关系。
  2. 书籍表:存放书籍的信息,以及该书的提到总次数。
  3. 标签-书籍对应关系表:存放该标签下该书籍被提到的次数信息。

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

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

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

四、建站

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

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


还想做的事情:

  1. 情感分析。一本书被提到,其评价有可能是正面的也有可能是负面的,希望加入一个情感分析的功能,然后加权到最终结果。
  2. 提高书籍信息准确度。 本来可以申请亚马逊或者淘宝之类的网站的api,通过api可以获取商品数据,可以利用来查询书籍信息,但是申请很麻烦,最后还是采用了爬虫+人工的方式。
  3. 移动端优化。 目前网站的排版在移动端表现不是太好。

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_758228.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建网站必不可少的知识9

接下来我们利用刚才得到的FTP信息进行网站文件的上传。小编以前使用FlashFXP,后来管理的服务器多了,涉及Linux系统和win系统以及虚拟主机,就改用xshell,他没法登录WIN系统远程,但是另外两种登录都包含。现在打开xshell…

名信片定做网站

最近发现一个免费制作名信片做推广的的网站,share一下给我自己的博客长长人气 下面是我的博客链接哦!里面有具体的链接 http://www.gaoxiaxia.com/wordpress/?p108

建站步骤

建站步骤 https://cloud.tencent.com/developer/article/1524225 几点补充: 1)添加角色后,系统会自动创建一个默认的站点(即XXX_XXX_XXX_XXX\Administrater->Default Web Site,位于角色->Web服务器(IIS)->…

日系博客HTML网站设计,源码搭建,无插件无框架,含音乐播放器,时钟日历,轮播图,相册

引言 为课程作业,设计参考了无印良品日本官网 应老师要求不使用JQ,全部效果源码一行行敲出来,浏览器用的是360极速浏览器,未对其他浏览器内核进行适配,最终实现的效果如下,可进入展示页面查看 展示页面&am…

网站调用支付宝进行支付-Java后台调用支付宝支付

网站调用支付宝进行支付-Java后台调用支付宝支付 最近公司一个产品用到了打赏支付,其中一个是支付宝,记录一下java后台调用支付宝的过程付代码。本文讲的是使用沙箱环境(支付宝提供的一种开发专用模式,不要实际支付,可以走通整个流…

整理了一周的Python资料,包含各阶段所需网站、项目,收藏了慢慢来

为什么80%的码农都做不了架构师?>>> 这周应该有不少学校已经开学了,那么同学们都该动起来了,把家里面的那些懒习惯给扔掉了可以。 不知怎么的,最近不少关注我的读者都开始私信我怎么学好python?零基础转行…

HTML——body 计算机代码 【头部在“网站开发”中】

HTML属性 完整的属性列表 在引用属性值的时候,如果某些属性本身就有双引号——name John "ShotGun" Nelson 转载于:https://www.cnblogs.com/expedition/p/10889312.html

linux/centos svn搭建及网站同步更新

开发十年,就只剩下这套架构体系了! >>> 一 搭建篇 yum install -y subversion svnserve --version 二 创建项目仓库 mkdir /var/svn cd /var/svn svnadmin create /var/svn/[项目名] 三 配置项目仓库 cd /var/svn/[项目名]/conf 1.修改综合配…

[Windows] 【黑科技】在线视频一键下载器:无尽一键视频下载v0.2主流视频网站想下就下...

撸了今年阿里、头条和美团的面试,我有一个重要发现.......>>> 前言 在线视频下载工具不算少,但真正好用的少之又少。很多软件步骤繁琐,下载速度慢,失效很快。我通过研究与写代码实现了真正一键就把视频下载下来。我的原…

[Android] 我的听书 谷歌版是一个帮助大家播放听书网站的播放器

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 注意事项: 如果锁屏不能自动切下一首,依次试一下: 1. 开启锁屏通知 2. 给app加锁 3. 前两者都不行时则去加后台白名单。 关于离线下载:不想给被抓取的网站增加负担…

国外停课后上百个教育网站官宣免费,亲测后发现这10个在国内秒打开!

随着海外疫情的爆发,世界各地的学校陆续开启了停课模式。为了方便学生们在家进行线上学习,各大教育网站也都纷纷推出了前所未有的阶段免费。这对一直以来给孩子苦苦寻求学习资源的老师和家长们来说,简直有了“一夜暴富”的赶脚。1. 教学资源网…

利用AirExplorerProPortable 实现网站 每日备份

Air Explorer Pro(v2.8.1)是一款非常出色的云存储资源管理工具,支持OneDrive、WebDAV和Google Drive等绝大多数云服务器,可以在将文件上传到云时对文件进行加密,同时还可在任何云或计算机之间同步文件夹。一个软件就可…

微软没强迫?Win 10 版本号追踪网站 Buildfeed 关闭

百度智能云 云生态狂欢季 热门云产品1折起>>> 近日,迫于各方压力,知名 Windows 10 版本号追踪网站 Buildfeed 宣布关闭。对于 Windows Insider 用户来说,即时获取最新 Windows 10 预览版本信息很重要,目前微软官方有提…

用apicloud 免费,简单封装一个wap手机网站成android app

APICloud是国内较早布局低代码开发的平台之一,其发布的低代码效率工具Plus Mode,为IT项目中每个角色提供专业工具,将需求分析、产品原型、UI设计、前端开发、后端开发紧密衔接,并基于行业大数据对前置环节进行复用,最终…

好域名怎么选?总结15名网站大佬给我的8条建议!(精华)

写网站上线的文章中提到需要有域名,本来是想在百度里搜一篇“选域名方面”的文章链接过去就好,但是看了好几篇,讲的都太笼统了,看完不知所云,一看就是“互相借鉴”的文章。所以我问了身边的几十位大佬,让他…

网站漏洞修复之苹果cms电影系统

2019独角兽企业重金招聘Python工程师标准>>> 苹果cms系统,是目前很多电影网站都在使用的一套网站系统,开源,免费,扩展性较好,支持一键采集,伪静态化,高并发的同时承载,获…

蜻蜓fm收音机电脑版_网页版全网音乐搜索解析下载网站,完全免费使用,支持网易酷狗酷我虾米百度一听咪咕荔枝蜻蜓 喜马拉雅全民K歌...

关注我们一起玩耍吧!微信公众号:微友集市我们不生产资源我们做互联网搬运工这里是“微友集市”,我们坚持分享优质的资源,让更多人能用到更好的资源,少花冤枉钱。如果你有什么需要,可以给我们留言&#xff0…

8x8点阵字体在线生成器_字体字形网站合集

求字体,提供中文和英文字体库下载、识别与预览服务。传送门:http://www.qiuziti.com字体之家,提供各种字体打包下载,中文字体、英文字体、PS字体、艺术字体、手机软件、字体工具等。传送门:http://www.17ziti.com站长字…

.net mvc 获取iis基本登录网站登录账号_超赞!用Java实现了第三方qq账号登录...

传智汇传智播客旗下IT互联网精英社区作者:人间蒸发来源:zuidaima.com/blog/4725615031700480.htmQQ互联注册一个账号网站地址:https://connect.qq.com/,添加一个应用,具体怎么申请以及需要填写的信息,腾讯官…

eclipse tomcat新建一个_Eclipse搭建本地动态网站环境

准备Eclipse和Tomcat完成Web容器的配置在Eclipse中配置Tomcat (web容器)1、选择window->show view->other->servers 下面出现了servers点击 no servers are available click this link to create a new server -> 选择Tomcat7(下载的是7)->点击下一步->browe…