分类分类
更新时间:2026-03-29 00:31:17作者:zhao
本文实例讲述了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程序设计有所帮助。
相关
王道三国策略游戏380.18 MBv0.0.12026-03-28
下载刮个爽手机版休闲益智186.96 MBv1.0.282026-03-28
下载龙符天祭策略游戏756.03 Mv22026-03-28
下载入魂一番赏app网上购物106.66 Mv4.3.52026-03-28
下载童话师经营养成504.02 Mv1.1.52026-03-28
下载Bebo Cam app图像拍照264.51 Mv2.3.02026-03-28
下载纯三国官方正版策略游戏167.24 Mv0.0.12026-03-28
下载Poka Cam app图像拍照74.7 Mv1.8.02026-03-28
下载COLMO app趣味娱乐199.15 Mv2.3.5.22026-03-28
下载愤怒的小鸟变形金刚苹果版休闲游戏439.4 Mv2.39.02026-03-28
下载这也能切苹果版休闲游戏479.6 Mv21342026-03-28
下载口袋吉伊卡哇苹果手机版模拟游戏920.4 Mv2.0.02026-03-28
下载










