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正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 Python
Python通过websocket与js客户端通信示例分析
Jun 25 Python
优化Python代码使其加快作用域内的查找
Mar 30 Python
Python的__builtin__模块中的一些要点知识
May 02 Python
python类和继承用法实例
Jul 07 Python
Python简单实现TCP包发送十六进制数据的方法
Apr 16 Python
django ajax json的实例代码
May 29 Python
django缓存配置的几种方法详解
Jul 16 Python
关于Python字符串显示u...的解决方式
Mar 06 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
Apr 10 Python
Python使用Chrome插件实现爬虫过程图解
Jun 09 Python
PyCharm 安装与使用配置教程(windows,mac通用)
May 12 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学习资料汇总与网址
2007/03/16 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
Javascript 构造函数,公有,私有特权和静态成员定义方法
2009/11/30 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
详解原生JS动态添加和删除类
2019/03/26 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
Python 内置函数complex详解
2016/10/23 Python
Python探索之pLSA实现代码
2017/10/25 Python
python抓取文件夹的所有文件
2018/02/27 Python
儿童编程python入门
2018/05/08 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
Html5页面获取微信公众号的openid的方法
2020/05/12 HTML / CSS
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
请说出你所知道的线程同步的方法
2013/04/19 面试题
雷人标语集锦
2014/06/19 职场文书
校外活动方案
2014/08/28 职场文书
晚会开场白和结束语
2015/05/29 职场文书
圆明园观后感
2015/06/03 职场文书
法律意见书范文
2015/06/04 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
新党员入党决心书
2015/09/22 职场文书
《植树问题》教学反思
2016/03/03 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript