Giter Club home page Giter Club logo

tw_jianshu_report's Introduction

TW_jianshu_report

Ruby爬虫统计简书用户的文章信息

使用方法

安装ruby相关环境

可以直接安装ruby,或者通过rbenv来管理ruby。

然后安装bundler:

gem install bundler

为了加速下载依赖库的速度,可以参考http://gems.ruby-china.org/页面使用国内镜像。

下载项目代码并运行

git clone https://github.com/geekeren/TW_jianshu_report.git
cd TW_jianshu_report/
bundle install
ruby main.rb 2016-12-18 2016-12-23

ruby main.rb后面是统计的开始与结束日期

注意:在mac进行bundle install的过程中,如果出现nokogiri相关的错误,可以运行xcode-select --install安装需要的依赖,然后重新bundle install。如果还无法解决的话,可以提issue。

项目文件

view/default.tpl.html是输出文件的模板,所以可以修改输出文件的样式布局

输入文件

  • studentlist.csv:用户列表文件,csv格式

每一行记录用户ID(简书用户主页URL /users/后面的字段),用户姓名,小buddy姓名

  • data/jianshu.sqlite3数据库文件:
    • JSID是简书的用户ID,一堆字符串,ID是本项目自己的用户ID,从1开始,是整型,因为有些buddy的简书ID没有收集。
    • 用户类型:0-同学,1-小buddy

输出文件

位于out文件夹下

tw_jianshu_report's People

Contributors

geekeren avatar freewind avatar

Watchers

James Cloos avatar  avatar

tw_jianshu_report's Issues

数据库开发

为了对抓下来的数据作更高效的分析,所以需要把抓下来的数据进行存储到数据库。而且后面我们还可能会对同学的文章统计作趋势分析,所以需要持久化数据。

一、数据库我建议使用sqlite3,sqlite3是文件数据库,连接起来比较方便,部署起来也很方便,而且我们的数据量不大

二、数据库中初步设计有下面几个表

  • 用户表:记录用户信息,包括同学们和buddy
    *简书ID,姓名,email(用于群发邮件),用户类型(同学还是buddy),头像网址(后续报告可能引入图片)

  • 文章信息表:记录文章信息
    *文章ID(简书文章页网址/p/xxxxx后面的那段),文章标题,作者ID,发布时间(yyyy-MM-dd HH:mm:ss),文章网址,字数,评论量、喜欢数、阅读数、打赏数

  • 用户关系表:关联同学和TA的buddy

三、数据库存入数据:

  • 用户表里面的ID、用户名、email以及同学和buddy的关联关系需要事先导入(我们之前对每个同学的简书ID有统计);头像网址等需要在爬虫爬取后填入数据库
  • 每周作统计时,我们会遍历类型为同学的用户ID,根据ID,爬虫会抓取对应用户的文章列表,获取在指定日期内发表的文章信息,将其存储到数据库(如果文章之前存在就修改,不存在就new一条),同学也会把同学的头像网址信息存储到用户表

四、数据库使用:

根据暂时的需求,需要实现:

  • 指定日期内所有同学的文章总数
  • 指定日期内所有写过文章的同学数量(及在统计日期范围内文章数不为0)
  • 指定日期内所有文章被阅读总数 “每一次阅读,就是一次分享”
  • 指定日期内的总字数:一个字就是我们的一滴汗水(因为文章列表里没有单篇文章的字数,所以这需要后续爬取单篇文章,而相关抓取代码还没实现,所以此需求延后)
  • 指定日期内发表了文章的同学姓名及此时间段内所有文章的信息
  • 排序需求:
    • 指定日期内发表文章最多/文章阅读量最多的前n位同学;
    • 指定日期内阅读量/喜欢量/评论量最多的前n篇文章;

数据库设计与制作sqlite空数据文件

数据库中初步设计有下面几个表

用户表:用于记录用户信息,包括同学们和buddy
*简书ID,姓名,email(用于群发邮件),用户类型(同学还是buddy),头像网址(后续报告可能引入图片)

文章信息表:用于记录文章信息
*文章ID(简书文章页网址/p/xxxxx后面的那段),文章标题,作者ID,发布时间(yyyy-MM-dd HH:mm:ss),文章网址,字数,评论量、喜欢数、阅读数、打赏数

用户关系表:关联同学和TA的buddy

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.