前言

Python中能够爬虫的包还有很多,但requests号称是“让HTTP服务人类”...口气不小,但的确也很好用。

本文是博客里爬虫的第一篇,实现一个很简单的功能:获取自己博客主页里的访问量。

当然了,爬虫一般肯定逃不掉要用正则表达式(regular expression),因此Python的re包也是十分常用的。

分析

博客园好像目前没有一个页面能访问完某用户所有随笔的功能,每一页只能显示最近十篇...因此需要使用一个循环,每次打开一个page,直到打开之后为空。

当输入https://www.cnblogs.com/maoerbao/default.html?page=1时:

而再随便输一个数,比如输入page=4时,页面为空:

那么我们就提取每一页的“阅读 ( )”里的内容即可。当提取不到信息时,结束循环。

然后发现每一篇的阅读量表现为“阅读 (”+数字,注意这里的括号之前有空格,括号是英文,正则表达式需要转义,数字的位数不确定。

正则表达式中,数字用'\d'描述即可,

出现0-n次用'*',出现0-n次用'+',出现0-1次用'?',

在这里,“阅读”后面必定有数字,因此用'*'或'+'皆可以。

代码

import requests
import re
import datetime N=[]
i=1
while True:
url = 'https://www.cnblogs.com/maoerbao/default.html?page='+str(i)
f = requests.get(url).text
a = re.findall('阅读 \(\d+',f)
if len(a)==0:
break
for j in a:
N.append(int(j[4:]))
i+=1 print('我的博客总量:{}\n'.format(len(N)))
print('总阅读量:{}'.format(sum(N)))
print('最大单篇阅读量:{}'.format(max(N)))
t = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print('\n统计时间:'+t)

运行结果

最新文章

  1. C#面向对象设计模式纵横谈——1.面向对象设计模式与原则
  2. Qt基本框架介绍
  3. 火狐浏览器如何js关闭窗口的几种解决方法
  4. java.lang.IllegalArgumentException: Result Maps collection does not contain value for java.lang.Integer
  5. 【基础语法】a++与++a的区别
  6. Android使用Fragment程序崩溃
  7. Hibernate关联关系之——单向n-1
  8. XML操作 之获取指定节点值
  9. ServiceStack.Redis 之 IRedisTypedClient
  10. (转载)MySQL关键字GROUP BY的使用
  11. nginx 一般配置实例 静态页面
  12. 【Ecstore2.0】导出问题解决(未导出或导出文件为0字节)
  13. access数据库 top语句失效解决方法
  14. nginx代理tcp协议连接mysql
  15. css img 隐藏的边距
  16. 简单了解 DLL中, .def 文件及C#调用C++方法
  17. 使用ServletContextListener关闭Redisson连接
  18. hashtable——散列表
  19. Servlet案例5:用户登录失败信息回显
  20. delphi HTML转义字符编码转换

热门文章

  1. 关联SecureCRT
  2. WIN10远程协助无法控制的解决方法
  3. NOIp2013D2T3 华容道【搜索&图论-最短路】
  4. 浏览器渲染优化4(styles and layout)
  5. 将对象以json格式写入到文件中
  6. 牛客小白月赛14 -A (找规律+除数取模)
  7. Luogu P3810 【模板】三维偏序(陌上花开)(CDQ分治)
  8. kaggle笔记
  9. 记一次完整的java项目压力测试
  10. 服务器部署Java Web及微信开发调试