Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6275745
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: Python/Ruby

2014-08-05 02:31:36

   今天看到自己新开的网易博客点击量寥寥,突然兴起,想写一个可以自动点击页面增加点击量的小工具。之前使用C++的时候,苦于找不到访问HTTP协议的API,不想涉及细节去考虑实现,幸好现在有Python自带的强大的urllib库,可以作为HTTP协议访问数据使用。老样子,先看下自己实现的代码原型,很简单:

点击(此处)折叠或打开

  1. #A Auto-Visit Web Site Tool
  2. import urllib
  3. import time
  4. import random
  5. print "Auto Click the WebPage for Click-Num..."
  6. for i in range(30):
  7.     fs = urllib.urlopen(r'Your URL')
  8.     print 'The ', i, 'time click done...'
  9.     time.sleep(int(random.uniform(1, 5)))
  10. print 'Auto Click WebPage Done...'
    这个程序都没有使用到类,就实现了网页自动点击。开始导入了三个模块,urllib提供访问HTTP网页相关API,time模块主要使用sleep()函数使得程序不要连续执行,random模块是使得间隔时间随机化,主要是考虑不要被判定为恶意访问行为。
   程序不难,主要借这个机会来熟悉下urllib这个库吧!Python的官方文档上说urllib库主要用来从WWW页面上获取数据(Fetching the data),因此只提供了“读”操作。下面针对几个要点逐一说明。
1. 版本:自己使用的python-2.7,在3.0版本中urllib模块分成了urllib.request/parse/error三个部分,而且原先的函数urllib.urlopen()也变成了urllib2.urlopen;
2. urllib模块的一个基本函数是urlopen(URL),这个函数参数的URL可以指向一个本地文件,也可以指向一个网络文件;当指向网络文件时,自动调用socket同URL建立连接,这也是我们选择使用该函数获得点击网页效果的原因;函数返回一个类文件对象,但是只能支持文件I/O的读操作,如read()/readline()/readlines(),此外该对象还支持fileno()/info()/getcode()/geturl()/close()等方法;
3. info()函数用来返回目标页面返回的元数据,如果是HTTP协议,返回的是HTML页面的头部,如Content-Length/Content-Type等;如果是本地文件,则返回文件属性,如上次修改的时间等;
4. geturl()函数用来返回网页真正的URL,有时目标服务器会自动引导客户端到其他URL的时候可以用此函数获取导向的URL;
5. getcode():返回HTTP连接的状态代码;
6. urltrieve()方法用于下载某个页面,其第一个参数为目标URL,第二个参数为本地存储文件名,可选,默认不设置时会自动存储于临时文件夹,函数返回一个二元元祖(文件名,头部信息);
7. 可以使用urlcleanup()清空urltrieve()的缓存;
   最后运行的结果:

   程序的实现比较简单,自己去看了现在的博客,基本都不再是依靠访问量划定等级了,而是靠获取积分,而这与登录次数、日志数量以及来访者评论数量有关,因此想直接提升自己的博客等级也并不是一个简单容易的事情。但是可以考虑通过注册几个工作账号来自动去目标博客评论,做到每天1-3次的评论还是可以的,适当设置转发,这样就成了博客刷积分的bot了。
【本节要点:
1. urllib库的使用,关键是urllib.urlopen(URL)与urllib.urltrieve(URL, [File]);
2. time模块,time.sleep(secs);
3. random模块,random.uniform()\random()】
阅读(965) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~