zoukankan      html  css  js  c++  java
  • Python网络数据采集(1):博客访问量统计

    前言

    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('我的博客总量:{}
    '.format(len(N)))
    print('总阅读量:{}'.format(sum(N)))
    print('最大单篇阅读量:{}'.format(max(N)))
    t = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    print('
    统计时间:'+t)

    运行结果

  • 相关阅读:
    Tomcat开启Debug模式
    Tomcat多实例
    django 总结
    Django2.* + Mysql5.7开发环境整合
    网络通讯协议
    Python-警告处理
    爬虫框架-selenium
    Python-标准库(常用模块)
    ORM概念
    面向对象-高级
  • 原文地址:https://www.cnblogs.com/maoerbao/p/11523201.html
Copyright © 2011-2022 走看看