Python多线程下载文件的方法


Posted in Python onJuly 10, 2015

本文实例讲述了Python多线程下载文件的方法。分享给大家供大家参考。具体实现方法如下:

import httplib
import urllib2
import time
from threading import Thread
from Queue import Queue
from time import sleep
proxy = 'your proxy';
opener = urllib2.build_opener( urllib2.ProxyHandler({'http':proxy}) )
urllib2.install_opener( opener )
ids = {};
for i in range(1,110):
 try:
  listUrl = "http://www.someweb.net/sort/list_8_%d.shtml" % (i);
  print listUrl;
  page = urllib2.urlopen(listUrl).read();
  speUrl = "http://www.someweb.net/soft/";
  speUrlLen = len(speUrl);
  idx = page.find(speUrl,0);
  while idx!=-1:
   dotIdx = page.find(".",idx + speUrlLen);
   if dotIdx != -1:
    id = page[idx + speUrlLen:dotIdx];
    ids[id] = 1;
   idx = page.find("http://www.someweb.net/soft/",idx + speUrlLen);
 except:
  pass;
q = Queue()
NUM = 5
failedId = [];
def do_somthing_using(id):
 try:
  url = "http://www.someweb.net/download.php?softid=%s&type=dx" % (id);
  h2 = httplib.HTTPConnection("your proxy", "you port");
  h2.request("HEAD", url);
  resp = h2.getresponse();
  header = resp.getheaders();
  location = header[3][1];  
  sContent = urllib2.urlopen(location).read();
  savePath = "C:\\someweb\\%s.rar" % (id);
  file=open(savePath,'wb');
  file.write(sContent);
  file.close(); 
  print savePath + " saved";
 except:
  pass;
def working():
 while True:
  arguments = q.get()
  do_somthing_using(arguments)
  sleep(1)
  q.task_done()
for i in range(NUM):
 t = Thread(target=working)
 t.setDaemon(True)
 t.start()
for id in ids:
 q.put(id)
q.join()

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python 常用string函数详解
May 30 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
Sep 05 Python
解决python 输出是省略号的问题
Apr 19 Python
终端命令查看TensorFlow版本号及路径的方法
Jun 13 Python
用Python编写一个简单的CS架构后门的方法
Nov 20 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
纯python进行矩阵的相乘运算的方法示例
Jul 17 Python
python动态视频下载器的实现方法
Sep 16 Python
Python 多线程,threading模块,创建子线程的两种方式示例
Sep 29 Python
Pycharm生成可执行文件.exe的实现方法
Jun 02 Python
Python操控mysql批量插入数据的实现方法
Oct 27 Python
Python机器学习之底层实现KNN
Jun 20 Python
Python爬取国外天气预报网站的方法
Jul 10 #Python
Python实现比较两个文件夹中代码变化的方法
Jul 10 #Python
python简单文本处理的方法
Jul 10 #Python
Python实现把json格式转换成文本或sql文件
Jul 10 #Python
Python中的一些陷阱与技巧小结
Jul 10 #Python
Python中的fileinput模块的简单实用示例
Jul 09 #Python
Python中的anydbm模版和shelve模版使用指南
Jul 09 #Python
You might like
php session处理的定制
2009/03/16 PHP
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
php获取本周星期一具体日期的方法
2015/04/20 PHP
php实现URL加密解密的方法
2016/11/17 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
js实现自动轮换选项卡
2017/01/13 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
Python自定义函数的创建、调用和函数的参数详解
2014/03/11 Python
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
python实现的简单RPG游戏流程实例
2015/06/28 Python
Python实现随机选择元素功能
2017/09/14 Python
python中pytest收集用例规则与运行指定用例详解
2019/06/27 Python
python实现双色球随机选号
2020/01/01 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
重阳节登山活动方案
2014/02/03 职场文书
初二生物教学反思
2014/02/03 职场文书
毕业生应聘求职信
2014/07/10 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
出售房屋协议书范本
2014/10/06 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
小学英语课教学反思
2016/02/15 职场文书
2016年党员承诺书范文
2016/03/24 职场文书
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL