Code Monkey home page Code Monkey logo

doubanspider's Introduction

豆瓣读书爬虫

Python所写,豆瓣读书的爬虫,方便大家搜罗各种美美书!

更新

今年年初又爬了一遍豆瓣图书数据,爬下了3000000+条目,这次爬的时候特意爬取了每个图书页面中的“喜欢读XX的人也喜欢条目XX”,最近对数据进行了处理和可视化做了这个新的WebApp(随意取名书海星空),WebApp的截图如下。

Aaron Swartz

Aaron Swartz

书海星空WebApp中每本书作为一个节点包含评价人数、评分、被链接数(类似Google的RankPage算法根据网页被链接的数目来排网页的重要性,一般越好的书籍被链接的数目也越多)、链入的图书节点、链出的图书节点等信息。作为好书一下的补充(为了找经典好书读之前做了好书一下:自己可通过评价人数、评分等筛选寻找好书),书海星空可以根据看过的或找到的好书顺藤摸瓜来找相关的更多经典好书,书海中尽情泛舟,找到自己喜欢的宝藏。我平时可以里面泡上一整天。

想获取书海星空源码及数据,移步到这里:书海星空

更新

写在前面

通过豆瓣评分和评价人数等规则,可非常好的探索挖掘经典图书和隐藏好书,从中更高效地汲取书中智慧。鉴于此,在16年的时候爬下了豆瓣所有的读书数据并做了个简单的WebApp接口方便自己挖掘查找和阅读好书。一直在用自己搞的这个搜书工具,觉得特别好,最近就再次爬了一遍豆瓣读书的数据,总共更新了3232088本图书信息。最近想把这个工具分享给大家,就自掏腰包租了一年的阿里云服务器,将WebApp放了上去,喜欢读书和不断学习的朋友可以访问好书一下使用(推荐使用电脑访问)。

使用说明

好书一下的首页如下。输入你所想查找相关书的关键字、评价分数高于的数值(一般高于8分就是不错的书,高于9分就是很好的书)、评价人数多于的数值(评价分数又高、人数又多的往往是经典之作),选定排序方法,点击好书一下就可以查找好书啦!

Aaron Swartz

查找结果截图示例如下。

Aaron Swartz

最后希望该工具能对你有所帮助,让你在挑选好书不断学习的路上走的更远!

更新

最近爬下了豆瓣所有的图书信息(3088633本,2138386KB),并做了一个界面方面与数据库交互来搜罗好书。 注:这里的代码不是爬下所有书籍所用的代码,仅供参考。有机会的时候再公开代码和爬下的所有数据。

交互界面截图示例:

Aaron Swartz

查询结果截图示例:

Aaron Swartz

更新

最近爬书发现豆瓣的页面规则发生了变化,导致不能爬到评价人数,由此对代码进行了相应的更新,并爬了一些新的数据(并不全)。

实现功能

1 可以爬下豆瓣读书标签下的所有图书

2 按评分排名依次存储

3 存储到Excel中,可方便大家筛选搜罗,比如筛选评价人数>1000的高分书籍;可依据不同的主题存储到Excel不同的Sheet

4 采用User Agent伪装为浏览器进行爬取,并加入随机延时来更好的模仿浏览器行为,避免爬虫被封(更新于 2015-5-20)

效果截图

试着小小运行了下,爬了七八万本书,结果在book_list.xlsx中,截图如下:

Aaron Swartz

代码刚写一小时,更多功能有待增加

声明:受@plough同学启发,再其代码基础上进行的创作,感谢@plough

doubanspider's People

Contributors

lanbing510 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

doubanspider's Issues

报错

Python 新手

  • 爬完保存数据时出问题

    Traceback (most recent call last):
      File "doubansider.py", line 142, in <module>
        print_book_lists_excel(book_lists,book_tag_lists)
      File "doubansider.py", line 110, in print_book_lists_excel
        wb=Workbook(optimized_write=True)
    TypeError: __init__() got an unexpected keyword argument 'optimized_write'
    
  • 然后我去掉参数optimized_write, 又报另外的错误

    Traceback (most recent call last):
      File "doubansider.py", line 143, in <module>
        print_book_lists_excel(book_lists,book_tag_lists)
      File "doubansider.py", line 119, in print_book_lists_excel
        ws[i].append([count,bl[0],float(bl[1]),int(bl[2]),bl[3],bl[4]])
    UnicodeEncodeError: 'decimal' codec can't encode characters in position 0-2: invalid decimal Unicode string
    
  • 是否可以爬一段数据就保存到excel中,一直放在内存中对性能没有影响吗?

菜鸟请教

请问交互界面代码能放出吗?还有,我运行了代码,只能爬到1个excel,是什么原因呢?

爬完整个豆瓣大概用了多长时间?

请问一下,你的代码爬完整个豆瓣大概用了多长时间?

另外,豆瓣所有的图书信息(3088633本,2138386KB),大概2GB,能不能分享一下,比如百度云盘?我想结合这些数据多找些高分的书看看。谢谢!

python3无法使用

作者你好,这段代码在python3上边无法直接使用。我是初学,看了一下代码 好像urllib2等模块是在python2上边使用的,其他原因还未找到,还在学习。请指教 谢谢

语法错误

File "doubanspider.py", line 75
except (urllib2.HTTPError, urllib2.URLError), e:
^
SyntaxError: invalid syntax

tag list

请问,关于书的标签您是怎么取到的?我在豆瓣读书的网页下发现,很多标签都没有展现出来,但是您的代码中有很多比较细的标签。(不知道在哪能私信到您,只能在issue里边发问。希望没有打扰到您)

unexpected keyword argument 'optimized_write'

在运行到110行wb=Workbook(optimized_write=True)的时候,报这个错:
TypeError: init() got an unexpected keyword argument 'optimized_write'

Mac book, python 2.7.13

改成wb=Workbook(),问题解决。

请问optimized_write=True的作用是什么?删掉有影响吗?

抓取了哪些图书标签?

请问一下,(3088633本,2138386KB)这么多书籍都是通过 图书标签 来抓取到的吗?如果是的话,抓取了哪些图书标签呢?

请求商务推广合作

作者您好,我们也是一家专业做IP代理的服务商,极速HTTP,想跟您谈谈是否能够达成商业推广上的合作。如果您,有意愿的话,可以联系我,微信:13982004324 谢谢(如果没有意愿的话,抱歉,打扰了)

我用的是python 3.6版本

wb=Workbook(optimized_write = True)
这个地方提示出错,是由于版本不对吗,你用的是哪个版本

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.