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 相关文章推荐
python实现哈希表
Feb 07 Python
python如何实现excel数据添加到mongodb
Jul 30 Python
python读取csv文件并把文件放入一个list中的实例讲解
Apr 27 Python
python3 打开外部程序及关闭的示例
Nov 06 Python
python中类的属性和方法介绍
Nov 27 Python
对pandas的算术运算和数据对齐实例详解
Dec 22 Python
解决python线程卡死的问题
Feb 18 Python
Django模板Templates使用方法详解
Jul 19 Python
利用python list完成最简单的DB连接池方法
Aug 09 Python
Python3列表List入门知识附实例
Feb 09 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
Jul 09 Python
Python语言编写智力问答小游戏功能
Oct 13 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
PHP脚本中include文件出错解决方法
2008/11/20 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
php导出CSV抽象类实例
2014/09/24 PHP
分享自定义的几个PHP功能函数
2015/04/15 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
jquery树形菜单效果的简单实例
2016/06/06 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
基于BootStrap实现简洁注册界面
2017/07/20 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python MD5文件生成码
2009/01/12 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
德国拖鞋网站:German Slippers
2019/11/08 全球购物
企业面试题试卷附带答案
2015/12/20 面试题
大学本科毕业生求职信范文
2013/12/18 职场文书
教育孩子心得体会
2014/01/01 职场文书
优秀交警事迹材料
2014/01/26 职场文书
社区母亲节活动方案
2014/03/05 职场文书
食品安全责任书
2014/04/15 职场文书
离婚协议书范文2014
2014/10/16 职场文书
论群众路线学习心得体会
2014/10/31 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS