BeautifulSoup库应用实例

获取博客园本人的积分排名数据:

1. 抓包获取积分排名数据返回接口:http://www.cnblogs.com/belle-ls/mvc/blog/sidecolumn.aspx?blogApp=belle-ls

2. 解析返回的数据,获取积分排名

3. 开启线程,循环打印积分排名信息

from bs4 import BeautifulSoup
import time
import requests
import threading


class BlogRankMonitor(object):
    """
    获取博客园积分排名
    """

    def __init__(self, id):
        self.urlBasic = 'http://www.cnblogs.com/%s/mvc/blog/sidecolumn.aspx?blogApp=%s'
        self.id = id
        self.score = 0
        self.rank = 0

    def get_nums(self, blogs_des):
        """
        分割字符串 积分 -    43 排名 -    283325,获取数字
        :return:
        """
        split_str = blogs_des.split('-')[1].strip()
        return split_str

    def get_blog_ranks(self):
        """
        解析页面获取博客积分和排名
        :return:
        """
        url = self.urlBasic % (self.id, self.id)
        res = requests.get(url)
        soup = BeautifulSoup(res.text, "lxml")
        liScore= soup.find(class_="liScore")
        for child in liScore.children:
            if u'积分' in child.string:
                self.score = self.get_nums(child.string)
            elif u'排名' in child.string:
                self.rank = self.get_nums(child.string)
        print("积分:", blog.score, "排名:", blog.rank, "时间:", time.strftime("%Y-%m-%d %X", time.localtime()))

    def start_score_rank_thread(self):
        t = threading.Thread(target= self.get_blog_ranks())
        t.start()


if __name__ == '__main__':
    blog = BlogRankMonitor('belle-ls')

    while 1:
        blog.start_score_rank_thread()
        time.sleep(10) #10s打印一次

"""
运行结果:
积分: 45 排名: 0 时间: 2019-02-12 15:57:22
积分: 45 排名: 0 时间: 2019-02-12 15:57:32
积分: 45 排名: 0 时间: 2019-02-12 15:57:42
积分: 45 排名: 0 时间: 2019-02-12 15:57:53
积分: 45 排名: 0 时间: 2019-02-12 15:58:03
....
"""

 

转载于:https://www.cnblogs.com/belle-ls/p/10365557.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值