https://www.xin3721.com/eschool/pythonxin3721/

起因

为了督促自己更加积极地写博客,我希望有一个排名系统能让我看到自己的进步。但是博客园对用户的排名体系相对是比较少的,主要是推荐博客排行和积分排行;但它们人数少难度大,短期内难以进入排名。因此我决定自力更生,爬取一份博客园粉丝数排行榜。

重要声明

为避免误(封)会(号),先做如下声明:

1、本排行榜非官方发布,是我通过爬虫得到的。

2、爬虫过程一直坚持网站友好原则:

(1)只查询网站公开内容(当然,非公开的我也不会)

(2)为避免对服务器造成压力,一直使用单线程发送请求,且每两个请求之间都设置了一定时间间隔

爬虫思路

首先介绍一下爬虫的思路,不感兴趣的朋友可以直接拉到文章最后看结果,或者点击这里查看:博客园粉丝数排行榜(粉丝数不少于100)

思路基本分两步:1、初始化种子用户;2、迭代。

1、初始化种子用户

这一步的目标,是找到尽可能多的种子用户,种子用户最好发过文章,尤其是高质量文章,这样他们有较大概率有较多的粉丝。

下面是我选取的种子用户来源,在博客园的对应位置在下图标出:

1、首页文章作者(200页):

2、精华文章作者(80+页)

3、编辑推荐文章作者(160+页)

4、推荐博客排行(100+人)

5、积分排行榜(3000人)

得到种子用户的用户名后,便可以在其个人页面获取昵称、粉丝数、园龄、文章首页等基本信息。例如,榜首(昵称:孤傲苍狼)的用户名是xdp-gacl,则他的个人页面是:https://home.cnblogs.com/u/xdp-gacl/

2、迭代

迭代的目的是从种子用户出发,找到其他粉丝数较多的用户;方法是获取种子用户“关注的人”——因为被关注的人有较大概率有更多的粉丝。用户关注的人在这里(还是以榜首孤傲苍狼为例):https://home.cnblogs.com/u/xdp-gacl/followees/

因此一轮迭代的步骤是这样的:

(1)遍历当前用户列表,得到他们关注的用户;

(2)将这些关注的用户加入到当前用户列表。

如此循环往复,进行多轮迭代;直到不再有新的用户为止。

3、不足

有义务说明一下本排行榜的不足之处:

(1)爬取时间主要在5.10-5.19,排行榜不会反映在此期间及之后发生的变化(如用户粉丝数上涨)。

(2)通过这种方式,肯定无法爬取所有用户信息,但是粉丝数较多的用户被爬到的概率要大得多;因此为了尽可能保证准确性,排行榜只列出了粉丝数不少于100的用户。

(3)排行究竟漏掉了多少用户,仍是一个未知数,如果你认为有什么方法上的漏洞,或者有漏掉的用户,欢迎讨论。

技术

本次爬虫使用的技术比较常规:语言使用Python3,发送请求使用requests库,HTML解析使用BeautifulSoup,数据存储使用Redis;此外,爬虫过程中还会遇到动态加载页面、使用cookie进行身份校验等,都比较常见,不再赘述。

数据存储之所以选择Redis,主要是考虑到数据在内存中,访问快,且Redis提供了丰富的数据类型(如有序集合),使用起来比较方便;为了保证数据不丢失,一定要保证Redis开启了持久化,最好开启AOF持久化。

结果

排行榜(粉丝数不小于100)可以点击链接查看:博客园粉丝数排行榜

前25名截图如下:

其中:

1、榜首是孤傲苍狼,有1.8w+粉丝,遥遥领先;在我爬虫这几天,涨了几十名粉丝,实在厉害。

2、粉丝数10000以上的,共有5位;粉丝数1000以上的,有286位;粉丝数100以上的,有3068位。

3、官方账号博客园团队有4644位粉丝,排第26位。

4、如果你的目标是进入前100名,至少需要2200+位粉丝;如果你的目标是进入前1000名,至少需要300+位粉丝。

python爬虫思路流程_python基础教程之【Python爬虫】爬了七天七夜,终|python基础教程|python入门|python教程...相关推荐

  1. python爬取bilibili数据_python基础教程之selenium+phantomjs爬取bilibili

    selenium+phantomjs爬取bilibili 首先我们要下载phantomjs 你可以到 http://phantomjs.org/download.html 这里去下载 下载完之后解压到 ...

  2. python可以处理多大的数据_科多大数据之Python基础教程之Excel处理库openpyxl详解...

    原标题:科多大数据之Python基础教程之Excel处理库openpyxl详解 科多大数据小课堂来啦~Python基础教程之Excel处理库openpyxl详解 openpyxl是一个第三方库,可以处 ...

  3. python的excell库_扣丁学堂Python基础教程之Excel处理库openpyxl详解

    扣丁学堂Python基础教程之Excel处理库openpyxl详解 2018-05-04 09:49:49 3197浏览 openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pipi ...

  4. 什么是python基础教程-python基础教程之python是什么?概念解析

    Python,是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件, 源代码和解释器CP ...

  5. python2.7使用教程_Python 2.7基础教程之:概要介绍

    .. _tut-informal: ************************************************** An Informal Introduction to Pyt ...

  6. pgsql数据库默认配置事务类型_PostgreSQL基础教程之:初始化配置

    PostgreSQL基础教程之:初始化配置 时间:2020-04-27 来源: PostgreSQL基础教程之:初始化配置 一.配置pg_hba.conf 先说明客户端认证配置文件pg_hba.con ...

  7. Linux入门基础教程之Linux下软件安装

    Linux入门基础教程之Linux下软件安装 一.在线安装: sudo apt-get install 即可安装 如果在安装完后无法用Tab键补全命令,可以执行: source ~/.zshrc AP ...

  8. python浮点数运算问题_python基础教程之. 浮点数运算:问题和局限

    14. 浮点数运算:问题和局限¶ 浮点数在计算机硬件中表示为以 2 为底(二进制)的小数.例如,十进制小数 0.125 是1/10 + 2/100 + 5/1000 的值,同样二进制小数 0.001 ...

  9. Python基础教程之Python简介

    #「笔耕不辍」–生命不息,写作不止# 1. Python是什么? (1)在介绍Python之前,先和大家聊一聊什么是编程语言.大家或许都知道,要让计算机为我们干活,就需要给计算机下指令,那么编程语言就 ...

最新文章

  1. 「智源论坛·学者报告会」报名: 面向高效推理的深度网络结构设计
  2. android鼾声分析,鼾声分析器
  3. idea创建xml文件 却没有xml模板
  4. 30分钟通过Kong实现.NET网关
  5. Mediator(中介者)--对象行为型模式
  6. 信息学奥赛一本通 1099:第n小的质数 | OpenJudge NOI 1.5 44
  7. 漫步最优化十——极值类型
  8. C语言序列是否有序、序列中删除指定数字、序列中整数去重、有序序列合并问题
  9. 科大讯飞2017年报:营收54亿利润5.9亿,政府补助1.18亿
  10. 如何在Docker上构建Node.js应用程序
  11. Java的基本数据类型与转换
  12. 此计算机上缺少vc2005_sp1_with_atl_fix_redist
  13. linux tftp 下载命令,Linux tftp命令
  14. C语言的自动关机程序和一个用来整人的小程序
  15. 解决SharePoint 2003的爬网性能问题- 之四
  16. 清除浮动2021-08-25
  17. 如何自定义炫酷浏览器主页
  18. linux中i的英文单词,i的发音有几种
  19. 2022年通信工程专业保研:从四非到浙大工院夏令营面试经验分享(前期准备篇/含通信原理面试真题)
  20. 抖音新手常犯的几个雷区,你知道几个?

热门文章

  1. Eureka 集群搭建
  2. 高通平台手机运行opencl
  3. hdu 4699 2个栈维护 or 伸展树 (2013多校联合)
  4. Go Toolchains
  5. 神雕侠侣2显示不了服务器,《神雕侠侣2》手游官方HD版常见问题
  6. Code blocks左边管理栏消失
  7. 《数据采集与分析》期末考试爬虫部分重要知识点复习(详细版)
  8. python 标量_Python TVTK 标量数据可视化与矢量数据可视化,空间轮廓线可视化
  9. DM365 adc学习笔记
  10. 推荐 6 个 GitHub 开源项目