python获取csdn的访问量和排名+falcon画图
2017-02-09 22:44
579 查看
打从回到老家,平时没事儿就写写blog,看看访问量和排名,也算有点小成就感。
可是CSDN最近啥时候更新排名貌似时间上有点不准,以前的时候大概8点半左右就更新了,可是最近好像有点延迟。
可不可以做个监控呢?
拿falcon画图吧
效果图如下
另外,里面的一些模块,如果没有的话就下载,比如
参考下 http://wuchong.me/blog/2014/04/24/easy-web-scraping-with-python/ 里面关于用bs4去拿html里面的元素非常不错。
重点:
其实遇到的最大难点是python里面的re在找的时候如果re.find(“排(\d+)名”,r.text)这种,貌似由于是unicode的原因,有点问题,可以尝试用\D作为非数字,但是这样以来范围就比较大了,所以借助bs4的威力就好多了。
可是CSDN最近啥时候更新排名貌似时间上有点不准,以前的时候大概8点半左右就更新了,可是最近好像有点延迟。
可不可以做个监控呢?
拿falcon画图吧
#!/usr/bin/env python # -*- coding: utf-8 -*- #coding: utf8 import sys import json import requests import time import urllib2, base64 import re import bs4 reload(sys) sys.setdefaultencoding('utf8') # 获取数据 headers = {'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'} r = requests.get('http://blog.csdn.net/vbaspdelphi',headers = headers) soup = bs4.BeautifulSoup(r.text) r2 = soup.select('div#panel_Profile ul#blog_rank li') value_viewtotal=re.findall("\D+(\d+)\D+",str(r2[0]))[0] value_jifen=re.findall("\D+(\d+)\D+",str(r2[1]))[0] value_paiming=re.findall("\D+(\d+)\D+",str(r2[1]))[0] # 准备上报数据 import time import urllib2 import json p = [] # 定义时间戳 timestamp = int(time.time()) def predata(endpoint,metric,key,value,timestamp,step,vtype): tags = '' i = { 'Metric' :'%s.%s'%(metric,key), 'Endpoint': endpoint, 'Timestamp': timestamp, 'Step': step, 'value': value, 'CounterType': vtype, 'TAGS': tags } return i p.append(predata("userdefine","csdn","viewtotal",value_viewtotal,timestamp,60,"GAUGE")) p.append(predata("userdefine","csdn","jifen",value_jifen,timestamp,60,"GAUGE")) p.append(predata("userdefine","csdn","paiming",value_paiming,timestamp,60,"GAUGE")) print json.dumps(p, sort_keys=True,indent = 4) #sys.exit(0) # 上报 method = "POST" handler = urllib2.HTTPHandler() opener = urllib2.build_opener(handler) url = "http://127.0.0.1:1988/v1/push" request = urllib2.Request(url, data=json.dumps(p)) request.add_header('Content-Type','application/json') request.get_method = lambda: method try: connection = opener.open(request) except urllib2.HTTPError,e: connection = e if connection.code == 200: print connection.read() else: print '{"err":1,"msg":"%s"}' % connection
效果图如下
另外,里面的一些模块,如果没有的话就下载,比如
pip install bs4
参考下 http://wuchong.me/blog/2014/04/24/easy-web-scraping-with-python/ 里面关于用bs4去拿html里面的元素非常不错。
重点:
其实遇到的最大难点是python里面的re在找的时候如果re.find(“排(\d+)名”,r.text)这种,貌似由于是unicode的原因,有点问题,可以尝试用\D作为非数字,但是这样以来范围就比较大了,所以借助bs4的威力就好多了。
相关文章推荐
- Python爬虫学习--WIN10下定时获取CSDN个人的访问量并保存到文件中2018/03/05
- Python爬虫学习--WIN10下定时获取CSDN个人的访问量并保存到文件中2018/01/19
- Python爬虫学习--获取CSDN个人的访问量
- 使用python爬取csdn博客访问量
- 小白学python-刷csdn的访问量(一定要低调一点哦亲)
- Python爬虫自动获取CSDN博客收藏文章
- python 增加csdn访问量升级
- 庆祝CSDN的个人博客访问量排名进入100
- Python爬虫(4)——获取CSDN链接
- 使用python爬取csdn博客访问量
- 如何使用python爬取csdn博客访问量
- 庆祝CSDN的个人博客访问量排名进入50名
- python模拟登录csdn并获取首页文章写入MySQL中(二)
- Python2 爬虫(三) -- 爬CSDN全部博文(自动获取页数)
- Python3.X登录模拟CSDN,获取文章列表
- 使用python爬取csdn博客访问量
- Python3 刷CSDN博客访问量
- Python爬虫小实践:爬取任意CSDN博客所有文章的文字内容(或可改写为保存其他的元素),间接增加博客访问量
- PYTHON 获取csdn的博客文章标题和描述
- 使用python抓取csdn博客访问量并保存在sqlite3数据库中