最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Python多线程下载文件的方法

来源:动视网 责编:小采 时间:2020-11-27 14:42:16
文档

Python多线程下载文件的方法

Python多线程下载文件的方法:本文实例讲述了Python多线程下载文件的方法。分享给大家供大家参考。具体实现方法如下: import httplib import urllib2 import time from threading import Thread from Queue import Queue from time import sl
推荐度:
导读Python多线程下载文件的方法:本文实例讲述了Python多线程下载文件的方法。分享给大家供大家参考。具体实现方法如下: import httplib import urllib2 import time from threading import Thread from Queue import Queue from time import sl


本文实例讲述了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多线程下载文件的方法:本文实例讲述了Python多线程下载文件的方法。分享给大家供大家参考。具体实现方法如下: import httplib import urllib2 import time from threading import Thread from Queue import Queue from time import sl
推荐度:
标签: 下载 python 多线程
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top