Python制作刷网页流量工具


Posted in Python onApril 23, 2017

准备

必须环境:

Python3

开始

先实现一个简单的版本,直接上代码:

import urllib.request
import urllib.error
#创建get方法
def get(url):
 code=urllib.request.urlopen(url).code
 return code
if __name__ == '__main__':
#设置一些基本属性
 url = "http://shua.3water.com"
 user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36"
 headers = {'User-Agent':user_agent}
 req = urllib.request.Request(url, headers=headers)
 #记录次数
 i = 1
 while 1: 
   code = get(url)
   print('访问:'+str(code))
   i = i+1

简单粗暴,刷的只是 pv,ip 没变,容易被搜索引擎发现,下面我们来改进一下

增加代理功能

给 get 方法添加以下代码:

random_proxy = random.choice(proxies)
proxy_support = urllib.request.ProxyHandler({"http":random_proxy})
opener = urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)

修改一下主方法:

if __name__ == '__main__':
 url = "http://shua.3water.com"
 #添加代理列表,可以自行去百度获取
 proxies = ["124.88.67.22:80","124.88.67.82:80","124.88.67.81:80","124.88.67.31:80","124.88.67.19:80","58.23.16.240:80"]
 user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36"
 headers = {'User-Agent':user_agent}
 req = urllib.request.Request(url, headers=headers)
 i = 1
 while 1:
   #添加参数
   code = get(url,proxies)
   print('第'+str(i)+'次代理访问:'+str(code))
   i = i+1

这样差不多了,不过有个 bug ,如果页面打不开了或者代理失效了,程序就自动结束了,接下来我们添加异常处理功能

异常处理

定义 mail 方法 ,用来发邮件提醒

def mail(txt):
 _user = "你的账号"
 _pwd = "你的密码"
 _to = "收件账号"
 msg = MIMEText(txt, 'plain', 'utf-8')
 #标题
 msg["Subject"] = "代理失效!"
 msg["From"] = _user
 msg["To"] = _to

 try:
   #这里我用的qq邮箱
   s = smtplib.SMTP_SSL("smtp.qq.com", 465)
   s.login(_user, _pwd)
   s.sendmail(_user, _to, msg.as_string())
   s.quit()
   print("Success!")

 except smtplib.SMTPException as e:
   print("Falied,%s" % e)

然后我们修改一下主方法:

if __name__ == '__main__':
 url = "http://shua.3water.com"
 proxies = ["124.88.67.22:80","124.88.67.82:80","124.88.67.81:80","124.88.67.31:80","124.88.67.19:80","58.23.16.240:80"]
 user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36"
 headers = {'User-Agent':user_agent}
 req = urllib.request.Request(url, headers=headers)
 i = 1
 while 1:
   try:
     code = get(url,proxies)
     print('第'+str(i)+'次代理访问:'+str(code))
     i = i+1
   except urllib.error.HTTPError as e:
     print(e.code)
      #添加mail方法
     mail(e.code)
   except urllib.error.URLError as err:
     print(err.reason)
      #添加mail方法
     mail(err.reason)

完成!

结语

代码只有短短的 50 行,程序还可以改进:

例如:代理列表自动获取,添加界面,扩展下多线程等等

最后给再给大家分享一个其他小伙伴的作品

import urllib2
import timeit
import thread 
import time
i = 0
mylock = thread.allocate_lock()
def test(no,r):
  global i
  url = 'http://blog.csdn.net'
  for j in range(1,r):
    req=urllib2.Request(url) 
    req.add_header("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)") 
    file = urllib2.urlopen(req)
    print file.getcode();
    mylock.acquire()
    i+=1
    mylock.release()  
    print i;
  thread.exit_thread()

def fast():
    thread.start_new_thread(test,(1,50))
    thread.start_new_thread(test,(2,50)) 

fast()
time.sleep(15)

经测试,超过两个线程以上服务器就会出现503错误,所以2个线程刚好

Python 相关文章推荐
利用打码兔和超人打码自封装的打码类分享
Mar 16 Python
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
python中遍历文件的3个方法
Sep 02 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
Python用Pillow(PIL)进行简单的图像操作方法
Jul 07 Python
浅析Python中的赋值和深浅拷贝
Aug 15 Python
详解如何为eclipse安装合适版本的python插件pydev
Nov 04 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
简单了解django索引的相关知识
Jul 17 Python
python绘制汉诺塔
Mar 01 Python
利用For循环遍历Python字典的三种方法实例
Mar 25 Python
Python Numpy库的超详细教程
Apr 06 Python
Python读取指定目录下指定后缀文件并保存为docx
Apr 23 #Python
正确理解python中的关键字“with”与上下文管理器
Apr 21 #Python
python妙用之编码的转换详解
Apr 21 #Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
Apr 21 #Python
Python学习笔记之解析json的方法分析
Apr 21 #Python
Python正则抓取网易新闻的方法示例
Apr 21 #Python
Python中shape计算矩阵的方法示例
Apr 21 #Python
You might like
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
jQuery 动画基础教程
2008/12/25 Javascript
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
AngularJS入门教程(二):AngularJS模板
2014/12/06 Javascript
深入分析原生JavaScript事件
2014/12/29 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
vue项目使用微信公众号支付总结及遇到的坑
2018/10/23 Javascript
百度小程序自定义通用toast组件
2019/07/17 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
[05:59]2018DOTA2国际邀请赛寻真——只为胜利的Secret
2018/08/13 DOTA
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
Python+微信接口实现运维报警
2016/08/27 Python
opencv python 图像去噪的实现方法
2018/08/31 Python
Python读取YUV文件,并显示的方法
2018/12/04 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
个人求职简历的自我评价
2013/10/19 职场文书
大学生职业生涯规划书
2014/03/14 职场文书
《桂花雨》教学反思
2014/04/12 职场文书
公证委托书格式
2014/09/13 职场文书
环境建议书
2015/02/04 职场文书
煤矿安全保证书
2015/02/27 职场文书
草房子读书笔记
2015/06/29 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书
Python实现8种常用抽样方法
2021/06/27 Python
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers