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之Python文档
Oct 10 Python
浅谈python抛出异常、自定义异常, 传递异常
Jun 20 Python
Python中Threading用法详解
Dec 27 Python
Python将图片转换为字符画的方法
Jun 16 Python
python3下载抖音视频的完整代码
Jun 05 Python
Python利用PyPDF2库获取PDF文件总页码实例
Apr 03 Python
学会python自动收发邮件 代替你问候女友
May 20 Python
python中get和post有什么区别
Jun 19 Python
基于Python+QT的gui程序开发实现
Jul 03 Python
Python监听剪切板实现方法代码实例
Nov 11 Python
python实现的人脸识别打卡系统
May 08 Python
Python类方法总结讲解
Jul 26 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利用正则表达式解决采集内容排版的问题
2013/06/20 PHP
smarty模板中拼接字符串的方法
2014/02/14 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
2016/03/16 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
javascript Demo模态窗口
2009/12/06 Javascript
js中onload与onunload的使用示例
2013/08/25 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
angular动态表单制作
2018/02/23 Javascript
[49:41]NB vs NAVI Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
Python中数字以及算数运算符的相关使用
2015/10/12 Python
Python将多个excel文件合并为一个文件
2018/01/03 Python
TensorFlow实现模型评估
2018/09/07 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
django最快程序开发流程详解
2019/07/19 Python
如何在python中执行另一个py文件
2020/04/30 Python
美国家居装饰和豪华家具购物网站:One Kings Lane
2018/12/24 全球购物
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
华为python面试题
2016/05/03 面试题
高中的自我鉴定
2013/12/16 职场文书
实习评语
2013/12/16 职场文书
项目计划书范文
2014/01/09 职场文书
历史专业学生的自我评价
2014/02/28 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
环境保护标语
2014/06/20 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
出生医学证明书
2014/09/15 职场文书
办公室主任岗位职责
2015/01/31 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技