crossin / bili_rank

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

哔哩哔哩及知乎大 V 排行榜

项目内容

  • 分别抓取哔哩哔哩及知乎粉丝数前 100 的用户,并按照粉丝数数量进行排名;保证抓取用户排行代码的可更新,定时更新排行榜。最后部署在服务器上,将排名数据用网页的形式展现出来。
  • 更多实用而有趣的分析案例请关注:Crossin的编程教室

项目思路

  1. 分别分析哔哩哔哩及知乎用户页面,使用 scrapy 获取尽可能全的用户粉丝数信息(1、本次用户数据参考我的另外两个关于哔哩哔哩及知乎的数据分析的项目;2、哔哩哔哩抓取2019年六月前播放数超 50w 视频UP主信息3755位;3、知乎从大v张佳玮开始抓取关注用户粉丝数过 1w 的用户共计9385人),使用mongodb 储存数据。将各站(后面用各站分别表示哔哩哔哩及知乎两个网站)粉丝数前 100 的用户进行排名;
  2. 在获取到可信的各站前 100 排名信息后,就可以根据各站排名信息,来对前 100 用户排名更新,更新时:在不考虑高精度的及时性 的情况下(数据库使用 mysql ,数据更新时使用 django 自带的 queyset API),在更新中选择了更新前 100 用户信息并对各前 100 用户关注用户粉丝数抓取比较(哔哩哔哩限定只显示关注用户前5页),来对各站排行榜的用户信息进行更新。定时更新使用 Linux 的 crontab 命令。
  3. 使用 django 创建网站并部署到服务器上,前端页面排名使用表格的形式展示出来的,使用了 Datatables(一款基于jQuery的表格插件),使用很方便。

运行环境

  • python3.7
  • Windows/Linux
  • jupyter notebook
  • mongodb/mysql

运行依赖包

  • requests
  • scrapy
  • pymongo
  • pymysql
  • django

如何跑起来

  1. 这里展示本地如何跑起来,确定好放置项目位置

     git clone https://github.com/spiderbeg/bili_rank.git
    
  2. 打开控制台,进入与 manage.py 同级目录,注意这里需要自己先在 rank/settings.py文件中配置一下MySQL,注意数据库名,用户名,密码要使用自己的。并且在MySQL中创建数据库;

     # 1 settings.py 配置MySQL
     DATABASES = {
         'default': {
             'ENGINE': 'django.db.backends.mysql',
             'NAME': 'bili', # 数据库名
             'USER': 'root', # 用户名
             'PASSWORD': 'pythonbegin1', # 密码
             'HOST': 'localhost',
             'PORT': '3306',
             'OPTIONS':{
             'charset':'utf8mb4',
             }
         }
     }
     # 2 命令行中执行
     python manage.py migrate # 为应用创建数据表
    
  3. 将初始各站粉丝数前 100 用户数据导入 MySQL 数据库, 文件名 bili_rakn.sql 及 zhihu.sql

     # root:用户名,bili:数据库名,database.sql:数据库文件名(文件名 bili_rakn.sql 及 zhihu.sql)
     mysql -u root -p -d bili < database.sql
    
  4. 开始运行排行项目, 进入 manage.py 同级项目

     # 打开浏览器输入 http://127.0.0.1:8000/bili_rank/ 就可以查看网页了
     python manage.py runserver
    
  5. 数据定时更新

文件说明

  • 整个文件为 Django 项目文件

bili_rank 及 zhihu_rank

  • 这是 django 中的两个应用文件夹,bili_rank 为哔哩哔哩应用,zhihu_rank 为知乎应用,两个文件夹大致相同因此着重介绍一个即可;
  • models.py 应用模型文件,网站的数据库设计;
  • urls.py 网站的路径设置;
  • views.py 网站的方法设置;
  • admin.py 可注册用户模型到 admin 管理员页面方便管理;
  • apps.py 应用配置;
  • tests.py 测试文件;
  • migrations 文件夹内为用户数据迁移的记录文件;
  • templates 网站的网页模板文件夹。

get_rank.py 及 zhihu_rank.py

  • get_rank.py 哔哩哔哩粉丝数前 100 用户排名更新文件,排名更新时定时跑这个文件。
  • zhihu_rank.py 知乎粉丝数排名的更新文件。

bili_rakn.sql 及 zhihu.sql

  • bili_rakn.sql 及 zhihu.sql 分别为从数据库中导出的各站排名初始数据。

一些建议及说明

Crossin的编程教室

  • 更多实用而有趣的分析案例请关注:Crossin的编程教室

Crossin的编程教室.jpg

About


Languages

Language:TSQL 42.2%Language:Python 34.1%Language:HTML 23.6%