第二个爬虫:查看csdn博客阅读数
2016-05-07 18:04
363 查看
年轻人嘛,总是有一点功利心理,发一篇博客,不管内容质量怎么样,总是想得到更多的浏览量,就像渴求朋友圈的赞一样。但是频繁的上自己的博客只是为了看一眼浏览数或者有无评论,感觉听麻烦,所以就写了个爬虫抓一下数据。
正则表达式部分有瑕疵。应该有一个表达式把三项数据全都截取出来的办法,但是太弱了不会写,还得学。:)
运行截图就是这样:
如果每次在DOS框敲执行命令也觉得费劲的话,可以对代码做一个死循环处理,来定时查看某项数据(在linux下可以使用crontab来定时自动化执行)。
运行截图;
说明:
CSDN某用户的文章列表是这种网址http://blog.csdn.net/u011130578/article/list/,但是写博客多的用户,会有很多叶列表,这该怎么爬呢?这里有个投机取巧的办法是,在list后面输入一个足够大的数(比如某用户写了100篇博客,每页罗列20篇博文,那么一共就有5页网页来展示你的博文,只要这个数字大于5就ok),比如http://blog.csdn.net/u011130578/article/list/200,那么这个网址就会把该用户所有的文章全部列出来,然后直接截取数据就ok正则表达式部分有瑕疵。应该有一个表达式把三项数据全都截取出来的办法,但是太弱了不会写,还得学。:)
#引入库文件 import re import urllib import urllib.request #标题标号 cnt = 1 #爬虫开始的网址 url = 'http://blog.csdn.net/u011130578/article/list/200' #截取文章题目的正则 rule_title = r'<span class="link_title"><a.*?>((?:.|[\r\n])*?)</a></span>' #截取文章点击数的正则 rule_click = r'<span class="link_view".*?><a.*?>.*?</a>((?:.|[\r\n])*?)</span>' #截取文章评论数的正则 rule_comment = r'<span class="link_comments".*?><a.*?>.*?</a>((?:.|[\r\n])*?)</span>' #模拟浏览器,加入User-Agent request = urllib.request.Request(url, headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1) \ AppleWebKit/537.36 (KHTML, like Gecko)\ Chrome/50.0.2657.3 Safari/537.36' }) try: html = urllib.request.urlopen(request) data = html.read() titles = re.compile(rule_title) title = titles.findall(data.decode('UTF-8')) clicks = re.compile(rule_click) click = clicks.findall(data.decode('UTF-8')) comments = re.compile(rule_comment) comment = comments.findall(data.decode('UTF-8')) for n in range(len(title)): print(str(cnt)+"\n"+title +"view-"+click +"\n\tcomments-"+comment ) cnt += 1 except: print('error')
运行截图就是这样:
如果每次在DOS框敲执行命令也觉得费劲的话,可以对代码做一个死循环处理,来定时查看某项数据(在linux下可以使用crontab来定时自动化执行)。
import time ... ... while 1: try: html = urllib.request.urlopen(request) data = html.read() titles = re.compile(rule_title) title = titles.findall(data.decode('UTF-8')) clicks = re.compile(rule_click) click = clicks.findall(data.decode('UTF-8')) comments = re.compile(rule_comment) comment = comments.findall(data.decode('UTF-8')) print(click[0]) #for n in range(len(title)): # print(str(cnt)+"\n"+title +"view-"+click +"\n\tcomments-"+comment ) # cnt += 1 except: print('error') #180s = 3mins time.sleep(180)
运行截图;
相关文章推荐
- CI框架中登录时候使用 加密 session 以及session注意的问题
- 工厂模式
- Python环境下安装使用异步任务队列包Celery的基础教程
- 开灯问题
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- 常用小方法的整理
- 动态规划—Problem O
- Phoenix 导出csv文件
- redirect_uri参数错误解决方法
- jQuery选择器总结
- 冒泡法排序
- 友盟分享5.1步骤记录
- 八大排序算法的Python及C++实现
- 软考信息系统监理师:2016年5月6日作业
- System and Device Programming------questions solved about device
- hdu 1233 还是畅通工程 (最小生成树,prim,优先队列,kruskal并查集)
- 模拟实现strchr,strrchr,strrstr.
- svn使用过程中遇到的错误
- SSH总结
- Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解