网址books.bigfacewo.com最近上班了,感觉自己变懒了。我一直想写一些关于这个网站的东西并分享。慢慢写。初步总结:对于高手来说,本站使用的技术是小儿科。不过,我想还是有朋友有这个需求的。这篇文章的内容未必都是准确的,所用的方法也不是最好的,但我始终相信一句话——两听者明,听者暗。所以看到这篇文章的朋友,希望你能带来自己的思考,同时也希望能给你带来一些东西。好了,废话不多说了。该网站是对外语网站的引用。是突发奇想,所以当时就想,如果用它来分析知乎网站会有什么效果。有一些不同的是,stackoverflow网站已经开放了API,所以获取数据非常方便。知乎没有公开api,所以只能用爬虫。因此,自然而然,流程大致分为四个步骤:数据获取、数据分析、网站建设、数据准备、网站建设1、数据获取和编写爬虫需要考虑的一些问题:可靠性。当程序因程序错误或停电等不可抗力因素停止时,如何从停止的那一刻起继续爬行;或者设计一个状态,保存已经抓取到的数据的相关信息。抓取任务会忽略已经抓取到的信息(这不是废话,哈哈),还有一些问题需要考虑:模拟登录(后续填坑)速度。假设每秒爬取一条数据,那么600条数据需要一个小时,600万条数据需要10000小时,需要一年多的时间。这是一个无法接受的速度,单机多线程每秒抓取10个物品还是可以接受的。这样一来,大概率会触发知乎的反爬虫系统,所以采用以下方法来避免这个问题:代理池。可以找一些免费的代理网站,比如喜慈,抓取一些ip就可以使用了。当然,这需要设计一个系统或服务,不断获取代理ip,验证是否可用,并保存起来以备后用。遇到爬虫验证页面,应该把ip去掉或者标记为暂时不可用。但是在很多情况下,知乎还是可以通过你的请求得到你的真实IP。饼干。重拨。这个很简单,也很可行。如果是单宽带,重拨会造成短时间的爬行停止。优先事项。事实上,并非每条数据都是必需的或包含有效信息。如果我们对要抓取的数据有一定的了解,那么我们就可以提取一些特征,优先抓取这部分数据。事实上,我也是这样做的,这尽可能地节省了我的时间。接触到Python后,我决定用它来写爬虫,因为实在是太方便了!2.数据分析从数据中提取图书信息有两种方法:提取书名中的内容。先建立图书信息库,再进行匹配。第二种方法可以更准确,但建立图书数据库也比较费时。于是采用了第一种方法。事实上,知乎上只要提到书籍,几乎都会包括书名,或者有些政治隐喻不能提及。当然,我们不需要有关此类书籍的信息。同一本书在每个答案中只能出现一次。汇总数据后,得到类似“标签:书名:提及次数”的文本。3、建站数据准备根据我的需要,应该建立如下三张表:标签表:存放书籍对应的标签,多对多的关系。图书表:存放图书的信息,以及该图书的总提及次数。Tag-BookCorrespondenceTable:存储该书在标签下被提及的次数。将步骤2中获得的文本导入数据库。为了得到该书的详细信息,在一些图书网站上也需要标明该书的书名。比如我去亚马逊搜索,然后把获取到的信息写入数据库。原理同步骤1,当然这里也引入了一些错误。由于模糊匹配,部分书籍信息有误(部分数据后期人工审核)。至此,网站数据就准备好了。4、建站建站相对简单。后台使用Restful风格编写界面,前端即可使用。用Vue搭建了一个版本的单页应用,但是搜索引擎爬不上去,于是又搭建了一个版本的ssr,用的是Nuxt.js。网站写了差不多4天,大部分时间都花在了步骤1和步骤2上。所以,如果你也想做一个类似的网站,不妨从写爬虫开始。我还想做的事情:情绪分析。提到一本书,它的评价可能是正面的,也可能是负面的。希望加入情感分析功能,然后对最终结果进行加权。提高图书信息的准确性。本来可以申请亚马逊或者淘宝等网站的API。通过API,我可以获取商品数据,用来查询图书信息,但是应用起来很麻烦。最终采用了爬虫+人工的方式。针对移动设备进行了优化。当前网站的排版在移动端表现不是很好。总结综上所述,写的比较简单。当然,因为不涉及具体代码,所以不能直接运行。不过,我想表达的是,整个流程就到这里了,大家可以使用自己熟悉的编程语言或者工具来实现。即使你不会Python,你也可以用Java或者C#写爬虫或者做分析;还有一个重要的原则,就是尽量复用别人的东西。比如python爬虫相关的库,功能很强大,可以直接拿来用。同样的,在使用Java的时候,你需要去调查语言相关的库,能够实现你的目的,然后使用它。另外,后面会补充一些省略的内容。
