爬取了豆瓣11W+网页,获取了5W+有效书籍信息

标签:爬虫 Python


之前写了一篇博文:利用爬虫获取豆瓣上可能喜欢的书籍,这篇博文中的爬虫可以以给定的url为原点,慢慢的向外扩散爬取书籍信息,可以获取到自己可能喜欢的书籍,但是有一个大缺点,就是只能提供一个初始url,即以一本书为基础进行推荐,而不能针对一个用户喜欢的所有书籍进行推荐。

后来想了想,可以把所有的书籍信息爬取下来,然后根据推荐算法推荐书籍。说干就干,一边调试一边爬取,一个礼拜就爬完了“大部分的”有效书籍信息。

本文主要根据原始数据进行一些简单的数据分析。

什么是有效书籍?

满足一下要求的书籍称为有效书籍

  • 至少包含书名、作者、出版社、出版年、定价、ISBN
  • 评分至少大于等于7.9
  • 有内容简介
  • 有热评

经过观察,不满足以上所有要求的书,或者是外文书籍,或者是绝版书籍,或者是旧版书籍,或者是“垃圾书籍”,或者是“不值得”推荐书籍。之所以选择7.9作为评分阈值,是因为在博主觉得可以接受的书中,最低分为7.9分。当然,下载了源码之后,你可以修改书籍的评分阈值。

爬虫都爬取了哪些信息?

爬虫将爬取的信息保存在MongoDB数据中,每本书籍信息是一个文档,具体如下:

  • 书籍url
  • 评分
  • 基本信息:书名、作者、出版社、出版年、定价、ISBN
  • 简介
  • 推荐书籍的url
  • 热评

下图为数据库中《“笨办法”学Python》的具体信息(热评就不完全显示了):

原来,众人的口味是相同的

程序开始只设置代码大全(第2版)的url作为初始url。我期待的是依靠这一个url爬取计算机相关书籍的信息,然而结果令我大吃一惊,仅仅依靠这一个url,爬取了包含但不限于计算机,政治,经济,历史,文学,动漫等领域共112826本有效书籍的url. 要知道,我可是把无效书籍提供的“推荐书籍的url”也抛弃了,原来,众人的口味是“相同的”。

我们来看看几个有趣的爬虫轨迹:

  • 外国文学:百年孤独<-月亮和六便士<-天才在左疯子在右<-拆掉思维里的墙<-少有人走的路<-如何阅读一本书<-暗时间<-浪潮之巅<-软件随想录<-程序员修炼之道<-代码大全
  • 武侠:天龙八部<-红楼梦<-苏菲的世界<-时间简史<-上帝掷骰子吗<-歌德尔、艾舍尔、巴赫<-失控<-浪潮之巅<-软件随想录<-程序员修炼之道<-代码大全
  • 漫画:海贼王<-灌篮高手<-乱马1/2<-郑玉巧教妈妈喂养<-郑玉巧育儿经-婴儿卷<-让孩子做主<-和孩子划清界限<-完整的成长<-亲子关系全面技巧<-重塑心灵<-语言的魔力<-谈话的力量<-学会提问<-你的灯亮着吗<-最后期限<-人月神话<-代码大全

查看更多爬虫的轨迹,其实能够发现从一个领域到另一个领域的书籍一般都不是专业性特别强的书籍,如《暗时间》、《人月神话》等,这些书籍就是依靠一个url爬完大部分有效书籍的关键。

通过一个url爬完了大部分有效书籍,是不是就可以得到“众人的口味是相同”的结论呢?其实我觉得是不可以的,之所以能够爬取这么多书籍,我猜测是豆瓣推荐算法的“惊喜度”比较高,比如《郑玉巧教妈妈喂养》推荐了《乱马1/2》,我觉得这两本书真的差异有点过大。所以,本节的标题其实是一个玩笑~

有效书籍评分趋势图

将除了简介和热评意外的信息输出成Excel文件格式,以方便做一些简单的处理。

将所有“有效书籍”按照评分排序,得到有效书籍评分趋势图:

该图与我们的常识相符合,即好书总是少的,评分越低的书越多。9分(含)以上的书籍占所有书籍的10%左右,所以9分以上的书真的都是很好的书。

说实话,万万没想到还有11本10分的书,随机选几本看一下:《殷周金文集成(修订增补本共8册)(精)》,《宇宙兄弟(7)》,《動力取向精神醫學–臨床應用與實務》。

这些书评分人数普遍较少,基本都是冷门的方面,所以能够来豆瓣评分的应该都是特别喜欢的,故评分为10分,也不奇怪。

最后一本在博文发表时已经不是10分,而是9.9分了……

其中《宇宙兄弟(7)》没有热评,应该算是“无效书籍”,应该是调试中不小心爬到的“无效书籍”,可以经过后续处理删除掉。

将所有书籍按照评分排序,可以看到好多漫画的评分很高,如《灌篮高手》、《海贼王》,再做推荐算法的时候,不能仅仅依靠评分来推荐,所以后期我准备再改进一下爬虫,给书籍加上标签信息。

各出版社有效书籍条形图

我们来看看哪些出版社出版的“有效书籍”最多吧(前30名):

不出意外,文学类的出版社遥遥领先。记得看到过一句话:“小说印数3000只能说是一般般,甚至较差。但是技术书籍印数3000,就算不错了,如果能够再版,一般都是经典之作了。”

技术类“有效书籍”排名第一的出版社是人民邮电出版社,入榜的还有机械工业出版社,电子工业出版社和清华大学出版社。博主的书几乎都是这四家出版社的,质量都蛮高的,这四家出版社的名字几乎就能保证其书籍的质量了。

除了文学类,技术类,还有漫画类也上榜了4家,可惜没有大陆的出版社。

一个有趣的现象

在爬虫爬取书籍的过程中,有一个有趣的现象,就是有一些页面怎么都打不开,一直都是404 not found,哪怕把浏览器头全部写上也没用,只能使用真实的浏览器打开。诚然,这里一方面是自己技术不到家,但是另外一方面,这些书籍真的都有共同的特点。

不多说什么,只列出部分书籍:
《具有中國特色的中共決策機制》
《我們最幸福》
《雪白血红》
《中華人民共和國史 第一卷斷裂與延續》

小结

  • 据说豆瓣上共有308W图书,但是博主爬取到的“有效书籍”只有5W。其实每天读一本书,人一辈子也只能读不到3W本
  • 好书很少,适合自己的好书更少,所以要用“推荐算法”推荐书籍,目前各大网站都有这个功能,要善于利用
  • 博主的目标是实现自己的推荐系统,会加上GUI,源码在这里,希望能够得到你的star

爬取了豆瓣11W+网页,获取了5W+有效书籍信息相关推荐

  1. python爬取网站时,一键获取headers、url等信息(真的是让我爬取网站时,省了不少力气,作为小秘密分享给大家喽)

    python爬取网站时,一键获取headers.url等信息 (真的是让我爬取网站时,省了不少力气,作为小秘密分享给大家喽) 作为Python的使用者,我今天就和大家来分享分享我学习python的经验 ...

  2. Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频、图片、获取网页源码等)整理

    Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频.图片.获取网页源码等)整理 目录

  3. 我用Python爬取了豆瓣影评,成功后居然发现了一个惊人的秘密.........

    大家好,我是IT界搬运喵. 相信大家在工作无聊时,总想掏出手机,看看电影刷刷视频.更加是夜深人静的时候,总是按耐不住自己的内心想要去看看小电影,当然我可没有开车.我说的是好电影,豆瓣高分电影,自己想歪 ...

  4. java 爬取评论,Java基于WebMagic爬取某豆瓣电影评论的实现

    目的 搭建爬虫平台,爬取某豆瓣电影的评论信息. 准备 webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发.webmagic的核心非常简单,但是覆盖 ...

  5. python爬取公众号文章如何获取发布时间

    python爬取公众号文章如何获取发布时间 在上一篇爬取公众号的文章中爬虫如何爬取微信公众号文章介绍了如何获取公众号的所有历史文章链接,但当我根据链接去爬取文章的时候,却遇到了一个小问题,就是文章的发 ...

  6. Java+Selenium爬取JavaScript返回的网页数据

    案例:本文主要描述如何根据快递单号使用Java+Selenium爬取"爱查快递网页"快递的跟踪信息并按照设计的数据格式返回数据 解决问题:爬取JavaScript返回的网页数据(网 ...

  7. Python基于BeautifulSoup4库爬取亚马逊网页

    引言 我写的这个爬虫非常的简单,没有什么难的逻辑思维,只是简单运用BeautifulSoup进行爬取,相信初学者都可以看懂,就是代码写的比较乱,因为我也是初学者....可能你没有耐心看完,我会尽量一部 ...

  8. 爬虫爬取数据时,网页响应码返回404问题的解决方法

    爬虫报404问题: 在进行爬虫爬取数据的过程中,使用语句: r = requests.get(url, timeout=60, headers=headers, stream=True) # prin ...

  9. Python爬取西刺代理网页

    爬取西刺代理网页的信息,并保存到本地的TXT文本或者mysql数据库中 本文只做爬取网页的练习 代码如下: import requests from lxml import etree import ...

最新文章

  1. C++11中std::async的使用
  2. 《博客园精华集》Sharepoint+MOSS分册第2轮筛选结果文章列表
  3. python web为什么不火-Python这么火,为何有人说Python不好找工作?
  4. c/c++如何正确使用结构体?
  5. python3精要(84)-字节码原理及分析(2)
  6. IntelliJ IDEA 问题总结之二 —— 快捷键、主题样式、导出jar、sqlite
  7. 电路常识性概念(3)-TTL与CMOS集成电路
  8. android volume挂载流程,Android SDCard UnMounted 流程分析(一)
  9. smzdm 扫地机器人_堪称米家最值!米家系列扫地机器人选购须知
  10. Java开发Maven插件
  11. Pytorch中nn.Conv2d的用法
  12. 社群商业模式设计方案
  13. 走在梦的路上 绝不回头
  14. 靠政府补贴实现华丽财报的科大讯飞,它背后蕴含着怎样的生机
  15. 微信卡券开发HelloWord
  16. android 连 wpa3路由器,WPA3 和 Wi-Fi Enhanced Open
  17. 态势感知“裸奔”的中国人 | 专访 360 张翀斌
  18. ARL资产灯塔收集系统
  19. Python制作微信自动回复机器人,打游戏时自动回复女朋友消息
  20. Android车载系统app性能自动化测试规划

热门文章

  1. 推荐一位玩自动化、爬虫的 Python 硬核爱好者
  2. adlds文件服务器,修改 AD LDS 配置
  3. java基础提升(六):缓冲流、转换流、序列化流、打印流
  4. 静态/动态博客Blog框架简介
  5. android 输入法如何启动流程_android输入法状态控制
  6. 《Core Java》读书笔记——第6章
  7. 求生之路2不显示局域网服务器,【求生之路2怎么局域网联机】如何局域网联机_求生之路2局域网联机教程_游戏城...
  8. HANA DB重置SYSTEM密码
  9. jupyter学习记录(一)——安装模块与导入图片
  10. 【逗老师带你考IE】如何快速通过HCIE考试