加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python网络数据采集(1):博客访问量统计

发布时间:2020-12-20 10:43:10 所属栏目:Python 来源:网络整理
导读:前言 Python中能够爬虫的包还有很多,但requests号称是“让HTTP服务人类”...口气不小,但的确也很好用。 本文是博客里爬虫的第一篇,实现一个很简单的功能:获取自己博客主页里的访问量。 当然了,爬虫一般肯定逃不掉要用正则表达式(regular expression)

前言

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)

运行结果

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读