您现在的位置: Tracy‘Blog > 博客 > Python > 正文
多线程抓图片

        好久好久没写过文章了,这篇文章完全是为了方便自己以后找资料。起因是这样的,BCTF里Inksec内部斯比大战,两人找了个女神投票站互刷票数,然后~看着看着,就想把上传上去的图片拿下来或许感觉不错。然后就有这篇了。

 

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

import urllib
import urllib2
import time
import thread
import threading
import re
import socket

socket.setdefaulttimeout(20.0)

path = "/home/tracy/pic/"
#pic = ['.jpg','.png','.bmp','.gif']

def get_url(id):
    url = "http://xxx.xxx.com/share?id=" + str(id)
#    target = urllib.urlopen(url)
    html = urllib.urlopen(url).read()
    print url
#    pic_url = target.read().split('style="background-image:',1)[1].split('background-repeat:',1)[0][5:-3]
    reg = 'background.+?(http://.*?\.jpg)'
    imgre = re.compile(reg)
    temp = re.findall(imgre, html)
    if temp:
        pic_url = temp[0]
    else:
        pic_url = "http://xxx.xxx.com/t01408e73446345e513.jpg"
    return pic_url

    
def down_pic(url):
    name = str(url).split('/')[-1]
    socket = urllib.urlopen(url)
    fp = open(path + name,'w+b')
    fp.write(socket.read())
    fp.close()
    print ('Pic Saved Success!')

def get_pic(idd):
    for i in range (0,500):
        url = get_url(idd + i)
        print "pic_url = "+ url
        if (url =="http://xxx.xxx.com/t01408e73446345e513.jpg"):
            time.sleep(1)        
        else:
            down_pic(url)
        time.sleep(1)

def main():
    tasks = []
    for i in range(0, 100):
        tasks.append(threading.Thread(target=get_pic, args=(i*500,)))
    for task in tasks:
        task.start()
    for task in tasks:
        task.join()


if __name__ == "__main__":
    main()




    刚开始一直下载不全,调了一下午,发现~~~是没有等待线程退出~~~~
 
2015年3月10日17:41:15
——Tracy_梓朋

 

发表评论(0)
姓名 *
电子邮件
QQ
评论内容 *
验证码 *图片看不清?点击重新得到验证码请输入图片后链接字符‘a’