Giter Site home page Giter Site logo

goodbooks's Introduction

这份爬虫是16年的时候写的,豆瓣后来肯定有改过反爬策略,所以这个项目下载之后应该不能直接使用,需要大家重新解析前端,提取元素,甚至使用ip代理。当年爬取的数据有备份,需要的同学可以发邮件联系我。

GoodBooks

目标

从豆瓣爬取书籍,使用推荐算法推荐可能喜欢的书籍。

给定初始豆瓣页面(默认为《代码大全》)url,然后提取该网页书籍的名称,评分,作者,出版社,出版时间,价格,ISBN,简介,热评和豆瓣推荐书籍的url。只要url管理器中的未爬取url集合不为空或者未到达指定爬取的次数,就一直爬取网页的信息以及新的url。

点击查看原图

使用Python2.7编写,需要的Python模块:

  • urllib2, 高级Web交流模块,根据支持的协议下载数据
  • beautifulsoup, 处理HTML/XML
  • re, 提供正则表达式相关操作
  • pymongo, 连接MongoDB数据库,并对其进行操作
  • pyExcelerator, 提供Excel相关的操作
  • PyQt4, GUI编写

使用说明

  • 安装上面提到的Python模块
  • 安装mongoDB数据库,每次运行程序之前一定要开启服务器mongod.exe
  • 在mongoDB数据中创建GoodBooks数据库(点击查看方法),建立以下集合:
    • newUrls, 保存未爬取的url
    • oldUrls, 保存已爬取的url
    • book, 保存爬取的书籍信息
    • notFoundUrls, 保存404错误的url
    • user, 保存用户添加的书籍
  • 先生成文件cookie1.txtcookie2.txt,依次点击“保存cookie1”,“保存cookie2”按钮

文件

  • spider_main.py, 爬虫引擎,进行各项任务的调度
  • url_manager.py, url管理器,管理已爬取和未爬取的url,提供添加url,获取url,查询是否还有未爬取的url等功能
  • html_downloader.py, html下载器
  • html_parser.py, html分析器,提取html中的数据和url
  • mongoDB.py, 数据库操作器,替代url管理器,html输出器
  • qt_gui.py, 用户界面
  • recommend, 推荐器,实现各种推荐算法

2016.07.02

  • 编写了爬虫界面,通过点击“爬虫窗口”按钮进入
  • 创建了推荐器,已经实现了“基于物品的协同过滤算法”
  • 修复了一些bug

2016.06.10

  • 加入qt_gui.py,创建用户界面
  • 按照频数推荐书籍,其实不算推荐算法,后面更新
  • 修复一些bug

2016.05.15

  • 经过实验,还是选择了单线程爬取,双线程就会禁止访问
  • 双线程其实已经写好了(由于效果不好,已退回原来版本,但可以使用git恢复到多线程版本),只是未开启,可以设置代理然后开启双线程
  • 经过测试,一个小时大概能访问2000+书籍页面,如果加上爬取热评需要进入页面的次数,则为3000+页面/h
  • GoodBooks.xls中包含了所有“有效书籍”的基本信息,不包含推荐书籍的url以及热评

2016.05.04

  • 加入mongoDB.py, 数据库操作器
  • 创建4个MongoDB集合,newUrls, oldUrls, notFoundUrls, book
  • 在数据库操作器中实现url管理器的功能,这样就可以断点爬取了
  • 在数据库操作器中实现html输出器的功能,将book集合中所有文档的关键信息打印成Excel文件
  • 修正了部分bug
  • 截止合并时已爬取6000本有效书籍,详见GoodBooks.xls

2016.04.22

  • 增加ISBN爬取
  • 增加热评爬取
  • 修改html输出器,显示ISBN以及热评

2016.04.11

  • 使用队列记录未爬取的url,避免随机获取url而导致越爬越偏的现象

2016.04.04

  • 新建工程,能够爬取书籍的简单信息。

备注

  • 我的博客中有代码的详细解释,欢迎访问
  • 会不断的更新与完善,例如增加代理,多线程爬取,断点爬取等功能
  • 最终目标是使用自己的推荐算法推荐书籍以及编写GUI

goodbooks's People

Contributors

moverzp 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

goodbooks's Issues

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.