展开全部

# -*- coding: utf-8 -*-

"""

Created on Fri Aug 07 17:30:58 2015

@author: Dreace

"""

import urllib2

import sys

import time

import os

import random

from multiprocessing.dummy import Pool as ThreadPool

type_ = sys.getfilesystemencoding()

def rename():

return time.strftime("%Y%m%d%H%M%S")

def rename_2(name):

if len(name) == 2:

name = '0' + name

elif len(name) == 1:

name = '00' + name

else:

name = name

return name

def download_pic(i):

global count

global time_out

if Filter(i):

try:

content = urllib2.urlopen(i,timeout = time_out)

url_content = content.read()

file_name = rename_2(repr(count)) + "_" + repr(random.randint(10000,999999999)) + ".jpg"

f = open(file_name,"wb")

f.write(url_content)

f.close()

if os.path.getsize(file_name) >= 1024*11:

count += 1

else:

os.remove(file_name)

except Exception, e:

print e

def Filter(content):

for line in Filter_list:

if content.find(line) == -1:

return True

def get_pic(url_address):

global pic_list

global time_out

global headers

try:

req = urllib2.Request(url = url_address,headers = headers)

str_ = urllib2.urlopen(req, timeout = time_out).read()

url_content = str_.split("\'")

for i in url_content:

if i.find(".jpg") != -1:

pic_list.append(i)

except Exception, e:

print e

MAX = 100

count = 0

time_out = 60

thread_num = 50

pic_list = []

page_list = []

pic_kind = ["hot","share","mm","taiwan","japan","model"]

Filter_list = ["imgsize.ph.126.net","img.ph.126.net","img2.ph.126.net"]

dir_name = "F:\Photos\\"+rename()

os.makedirs(dir_name)

os.chdir(dir_name)

start_time = time.time()

#url_address = "

url_address = "

headers = {"User-Agent":" Mozilla/5.0 (Windows NT 10.0; rv:39.0) Gecko/20100101 Firefox/39.0"}

for pic_i in pic_kind:

for i in range(1,MAX + 1):

page_list.append(url_address + pic_i + "/page/" + repr(i))

page_pool = ThreadPool(thread_num)

page_pool.map(get_pic,page_list)

page_pool.close()

page_pool.join()

print "获取到".decode("utf-8").encode(type_),len(pic_list),"张图片,开始下32313133353236313431303231363533e78988e69d8331333337613230载!".decode("utf-8").encode(type_)

pool = ThreadPool(thread_num)

pool.map(download_pic,pic_list)

pool.close()

pool.join()

print count,"张图片保存在".decode("utf-8").encode(type_) + dir_name

print "共耗时".decode("utf-8").encode(type_),time.time() - start_time,"s"

#Python2.7.10---httplib2-0.7.7-----

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐