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实现ping的方法
Jul 06 Python
python中urllib.unquote乱码的原因与解决方法
Apr 24 Python
使用Python实现windows下的抓包与解析
Jan 15 Python
Python安装图文教程 Pycharm安装教程
Mar 27 Python
Python实现爬虫爬取NBA数据功能示例
May 28 Python
Python实现字典(dict)的迭代操作示例
Jun 05 Python
Python实现朴素贝叶斯分类器的方法详解
Jul 04 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
Dec 11 Python
Python自动抢红包教程详解
Jun 11 Python
Python本地及虚拟解释器配置过程解析
Oct 13 Python
windows+vscode安装paddleOCR运行环境的步骤
Nov 11 Python
Python实现学生管理系统并生成exe可执行文件详解流程
Jan 22 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加密解密的代码
2006/10/09 PHP
解析PHP提交后跳转
2013/06/23 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
header导出Excel应用示例
2014/01/24 PHP
php二维数组转成字符串示例
2014/02/17 PHP
使用Thinkphp框架开发移动端接口
2015/08/05 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
Laravel框架使用Redis的方法详解
2018/05/30 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
jQuery获取样式中颜色值的方法
2015/01/29 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
js操作DOM--添加、删除节点的简单实例
2016/07/08 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
Python中的index()方法使用教程
2015/05/18 Python
python 实现红包随机生成算法的简单实例
2017/01/04 Python
python中文乱码不着急,先看懂字节和字符
2017/12/20 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
祖国在我心中演讲稿400字
2014/05/04 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
司机个人年终总结
2015/03/03 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
财务统计员岗位职责
2015/04/14 职场文书
总经理年会致辞
2015/07/29 职场文书
如何利用js在两个html窗口间通信
2021/04/27 Javascript
Python selenium的这三种等待方式一定要会!
2021/06/10 Python