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 urllib、urllib2、httplib抓取网页代码实例
May 09 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
May 03 Python
使用Python判断质数(素数)的简单方法讲解
May 05 Python
Python的dict字典结构操作方法学习笔记
May 07 Python
Python lxml解析HTML并用xpath获取元素的方法
Jan 02 Python
Python中的正则表达式与JSON数据交换格式
Jul 03 Python
使用Django清空数据库并重新生成
Apr 03 Python
pyecharts动态轨迹图的实现示例
Apr 17 Python
Python脚本打包成可执行文件过程解析
Oct 20 Python
浅析pandas随机排列与随机抽样
Jan 22 Python
Python中json.dumps()函数的使用解析
May 17 Python
Python实现DBSCAN聚类算法并样例测试
Jun 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一些常用的正则表达式字符的一些转换
2008/07/29 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
javascript 读取图片文件的大小
2009/06/25 Javascript
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
jQuery简单实现验证邮箱格式
2015/07/15 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
Angular2数据绑定详解
2017/04/18 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
JavaScript字符串转数字的5种方法及遇到的坑
2018/07/16 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
[02:43]DOTA2英雄基础教程 半人马战行者
2014/01/13 DOTA
[01:01:41]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第二场 1月31日
2021/03/11 DOTA
在Python中使用模块的教程
2015/04/27 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
Python谱减法语音降噪实例
2019/12/18 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
社区健康教育实施方案
2014/03/18 职场文书
租房协议书范本
2014/04/09 职场文书
环保倡议书怎么写
2014/05/16 职场文书
现实表现材料范文
2014/12/23 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
请客吃饭开场白
2015/06/01 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书
go:垃圾回收GC触发条件详解
2021/04/24 Golang
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫