Python 刷网页访问量

额……有这种想法,感觉自己坏坏哒……其实,自己刚开始写CSDN博客,看到朋友们的博客访问量都达到几十万几百万了,而自己刚开始写,一星期过去了访问量才两位数,好拙计啊……说白了还是自己的虚荣心在作怪……尝试一下吧……

使用了python3的urllib模块,开始使用了简单的urllib.request.urlopen()函数,结果发现行不通,csdn设置了简单的检查选项,需要python模拟浏览器进行访问才行,简单的很,那就模仿一个好啦,使用urllib.request.build_opener()就可以进行模拟啦,添加一个访问头就可以啦

但是呢,访问太频繁有可能会造成服务器拒绝访问,那么就稍微等等好啦,使用time模块中的sleep()函数即可。还有一个小问题,当服务器拒绝的时候,python会当成错误,从而终止了程序,这样就不好玩了,一点都不自动化,解决这个问题也蛮简单,刚才看书才看到try…except…语法,这样把出现的错误都放到except语句里面不就OK了么,经过本人测试,一般会出现下面两个错误urllib.error.HTTPError和urllib.error.URLError,那这两个错误都弄到except里面就可以啦,哈哈

于是简单的刷一个页面的版本出现啦,代码如下:

[python] view plaincopyprint?

  1. __author__ = 'MrChen'
  2. import urllib.request  
  3. import time  
  4. #使用build_opener()是为了让python程序模仿浏览器进行访问
  5. opener = urllib.request.build_opener()  
  6. opener.addheaders = [('User-agent', 'Mozilla/5.0')]  
  7. #专刷某个页面
  8. print('开始刷了哦:')  
  9. tempUrl = 'http://blog.csdn.net/calling_wisdom/article/details/40900815'
  10. for j in range(200):  
  11. try :  
  12.         opener.open(tempUrl)  
  13. print('%d %s' % (j , tempUrl))  
  14. except urllib.error.HTTPError:  
  15. print('urllib.error.HTTPError')  
  16.         time.sleep(1)  
  17. except urllib.error.URLError:  
  18. print('urllib.error.URLError')  
  19.         time.sleep(1)  
  20.     time.sleep(0.1)  

上面这个版本圆满完成了刷一个页面的任务,还蛮好用的,但是呢,如果我要把我所有的博客都刷个遍呢,一个一个地刷是不是太慢了呢,鄙人七八篇博客还勉强可以接受,但是如果以后七八十篇呢……想想就头疼,还是继续想办法吧

鉴于目前本人的所有博客都在博客主页目录的第一页中,所以直接查看博客目录,然后把每篇博客的网址都提取出来不久OK了么,嗯,说干就干

简单列一下思路:

1,  先抓取博客目录页的网址内容,然后使用re模块进行查找,找到每篇博客的地址(实际情况是这样的,里面的网址都是半截半截的,类似这样的/calling_wisdom/article/details/........,一会把前面的部分加上就可以了)

2,  把里面重复的网页过滤掉,这个也简单,使用set()就可以了

3,  把抓取到的网址合并成可以直接进行访问的网址

4,  使用一下刚学的BeautifulSoup解析网页的标题,这样就可以知道刷的是哪篇博客了(在这里继续夸一夸BeautifulSoup,超级好用,一下就把我想要的内容提取出来了)

5,  准备完毕,刷起来!每个页面给大爷刷200遍先!让爷装B让爷飞!

代码如下:(注释写的很到位了吧,不用再解释什么吧,最讨厌写代码没注释的)

[python] view plaincopyprint?

  1. __author__ = 'MrChen'
  2. import urllib.request  
  3. import re  
  4. import time  
  5. from bs4 import BeautifulSoup  
  6. p = re.compile('/calling_wisdom/article/details/........')  
  7. #自己的博客主页
  8. url = "http://blog.csdn.net/calling_wisdom"
  9. #使用build_opener()是为了让python程序模仿浏览器进行访问
  10. opener = urllib.request.build_opener()  
  11. opener.addheaders = [('User-agent', 'Mozilla/5.0')]  
  12. html = opener.open(url).read().decode('utf-8')  
  13. allfinds = p.findall(html)  
  14. #print(allfinds)
  15. urlBase = "http://blog.csdn.net"#需要将网址合并的部分
  16. #页面中的网址有重复的,需要使用set进行去重复
  17. mypages = list(set(allfinds))  
  18. for i in range(len(mypages)):  
  19.     mypages[i] = urlBase+mypages[i]  
  20. print('要刷的网页有:')  
  21. for index , page in enumerate(mypages) :  
  22. print(str(index), page)  
  23. #设置每个网页要刷的次数
  24. brushNum = 200
  25. #所有的页面都刷
  26. print('下面开始刷了哦:')  
  27. for index , page in enumerate(mypages) :  
  28. for j in range(brushNum):  
  29. try :  
  30.             pageContent = opener.open(page).read().decode('utf-8')  
  31. #使用BeautifulSoup解析每篇博客的标题
  32.             soup = BeautifulSoup(pageContent)  
  33.             blogTitle = str(soup.title.string)  
  34.             blogTitle = blogTitle[0:blogTitle.find('-')]  
  35. print(str(j) , blogTitle)   
  36. except urllib.error.HTTPError:  
  37. print('urllib.error.HTTPError')  
  38.             time.sleep(3)#出现错误,停几秒先
  39. except urllib.error.URLError:  
  40. print('urllib.error.URLError')  
  41.             time.sleep(3)#出现错误,停几秒先
  42.         time.sleep(0.5)#正常停顿,以免服务器拒绝访问

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

基于ShodanPython库的批量攻击实践

拜读了xiaix关于Shodan的全面介绍:《Shodan新手入坑指南》,受益匪浅。SQL Server的弱口令入侵案例层出不穷,利用工具也大量存在,本文以MS...

233100
来自专栏小白安全

小白博客 Windows最基本快捷键功能

今天要说的东西,可能不少朋友都会觉得太基础,或者不适用但是还会有不少朋友喜欢的 其实 Win 的快捷键有很多,甚至很多人还能自己把热键改成自己喜欢的。 ? 首先...

29150
来自专栏Fundebug

XSS攻击之窃取Cookie

译者按: 10 年前的博客似乎有点老了,但是XSS 攻击的威胁依然还在,我们不得不防。

19350
来自专栏数据和云

122Architecture 全面解读 - 第一篇 全局解析+ADG+IM模块

Oracle自发布12.1之后,就一直声称要全面转云,在之后的三四年里,一直杳无音信,大家都在猜测,Oracle又在憋什么大招,果然,2017阳春三月,大招来了...

38890
来自专栏JAVA技术zhai

垂直打击之JVM剖析

Java是目前软件开发领域中使用最广泛的编程语言之一。Java应用程序在许多垂直领域(银行、电信、医疗保健等)中都有广泛使用。Refcard的目的是,帮助开发者...

20240
来自专栏北京马哥教育

推荐!国外程序员整理的系统管理员资源大全(一)

备份软件 Amanda -客户端-服务器模型备份工具 Bacula - 另一个客户端-服务器模型备份工具 Backupninja -轻量级,可扩展的元数据备份系...

535100
来自专栏微信终端开发团队的专栏

Android微信智能心跳方案

前言: 在13年11月中旬时,因为基础组件组人手紧张,Leo安排我和春哥去广州轮岗支援。刚到广州的时候,Ray让我和春哥对Line和WhatsApp的心跳机制进...

1.2K100
来自专栏FreeBuf

伽利略远程监控系统完全安装指南

7月初,外媒用臭名昭著形容意大利的网络军火商公司hacking team及其被黑事件,黑吃黑的黑客将该公司rcs系统的安装程序、源代码和邮件打包供所有人下载,更...

403100
来自专栏信安之路

Red Team 工具集之辅助工具

上图是一个 Red Team 攻击的生命周期,整个生命周期包括:信息收集、攻击尝试获得权限、持久性控制、权限提升、网络信息收集、横向移动、数据分析(在这个基础上...

16300
来自专栏FreeBuf

更适合作为主系统使用的Parrot Security简介

Parrot 是一个基于Debian的专注于渗透测试和隐私保护的Linux发行版,但是更加方便日常使用,有贴心的使用体验,丰富的工具,更注重隐私保护。 The...

92650

扫码关注云+社区

领取腾讯云代金券