# -*- coding: utf-8 -*-
__author__ = 'Administrator'
from PyQt4.Qt import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys,os,datetime,urllib,urllib2,re,threading,thread
from g1 import Ui_Form
class Gui2(QDialog,Ui_Form):
    def __init__(self):
        super(Gui2,self).__init__()
        self.setupUi(self)
        self.UrlCount.setReadOnly(True)
        t=QTimer(self)
        t.timeout.connect(self.datetimes)
        t.start(1000)
        self.pushSelect.clicked.connect(self.FilePath)
        self.UrlFile.setText(r'\pic')
        self.DownButton.clicked.connect(download)
    def getWebsite(self):
        return self.UrlEdit.text() #获取网址的函数
    def getFilePath(self):
        return self.UrlFile.text() #获取文件路径的函数
    def setTag(self,downloadtag):
        self.UrlCount.setText(downloadtag) #显示状态
    def FilePath(self):
        filepath=QFileDialog.getExistingDirectory(self,'select','/pic')
        self.UrlFile.setText(unicode(filepath))
        while True:
            if (filepath.isEmpty()):
                QMessageBox.information(self,'Error','Error')
                filepath=QFileDialog.getExistingDirectory(self,'select','/')
                continue
            else:self.UrlFile.setText(unicode(filepath))
            break
    def datetimes(self):
        self.UrlTime.setText(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

def download():
    Wb=unicode(main.getWebsite(),'utf-8').encode('utf-8')
    Fp=main.getFilePath()
    main.setTag('ok')
    t=MyT(Wb,Fp)
    t.start()

class MyT(threading.Thread):
    def __init__(self,web,files):
        threading.Thread.__init__(self)
        self.web=web
        self.files=files
    def run(self):
        html=getHttl(self.web)
        print self.web
        print self.files
        getImg(html,self.files)
        main.setTag('ok')
def getHttl(url):
    return urllib.urlopen(url).read() #返回网页源码
def getImg(html,path):
  reg=re.compile(r'src="(.*?\.(jpg|gif|png|js))')
  imglist=reg.findall(html)
  print len(imglist)
  x=1
  for imgurl in imglist:
    print imgurl
    main.setTag(str(x)+'/'+str(len(imglist))) #在状态栏上显示进度
    if imgurl[1]=='gif':
      xpath=path+'\%d.gif' % x
      urllib.urlretrieve(imgurl[0],xpath)
    elif imgurl[1]=='png':
      xpath=path+'\%d.png' % x
      urllib.urlretrieve(imgurl[0],xpath)
    elif imgurl[1]=='js':
        xpath=path+'\%d.js' % x
        urllib.urlretrieve(imgurl[0],xpath)
    else:
        xpath=path+'\%d.jpg' % x
        urllib.urlretrieve(imgurl[0],xpath)
    x+=1
  print 'finish--------'
app=QApplication(sys.argv)
main=Gui2()
main.show()
sys.exit(app.exec_())

文件:http://url.cn/XDattY

python批量下载的更多相关文章

  1. 用Python批量下载DACC的MODIS数据

    本人初次尝试用Python批量下载DACC的MODIS数据,记下步骤,提醒自己,数据还在下载,成功是否未知,等待结果中...... 若有大佬发现步骤有不对之处,望指出,不胜感激. 1.下载Python ...

  2. python批量下载微信好友头像,微信头像批量下载

    #!/usr/bin/python #coding=utf8 # 自行下载微信模块 itchat 小和QQ496631085 import itchat,os itchat.auto_login() ...

  3. 用python批量下载贴吧图片 附源代码

    环境:windows 7 64位:python2.7:IDE pycharm2016.1 功能: 批量下载百度贴吧某吧某页的所有帖子中的所有图片 使用方法: 1.安装python2.7,安装re模块, ...

  4. 用python批量下载图片

    一 写爬虫注意事项 网络上有不少有用的资源, 如果需要合理的用爬虫去爬取资源是合法的,但是注意不要越界,前一阶段有个公司因为一个程序员写了个爬虫,导致公司200多个人被抓,所以先进入正题之前了解下什么 ...

  5. Python 批量下载BiliBili视频 打包成软件

    文章目录 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人,我给大家 ...

  6. python——批量下载图片

    前言 批量下载网页上的图片需要三个步骤: 获取网页的URL 获取网页上图片的URL 下载图片 例子 from html.parser import HTMLParser import urllib.r ...

  7. Python - 批量下载 IIS 共享的文件

    1.说明 用 IIS 以WEB形式发布了本地文件夹,提供文件下载,并设置了访问权限:默认下载需要点击一个一个的下载,web界面如下: 3.脚本 执行脚本批量下载文件,会在当前目录创建文件夹,并压缩该文 ...

  8. python批量下载图片的三种方法

    一是用微软提供的扩展库win32com来操作IE: win32com可以获得类似js里面的document对象,但貌似是只读的(文档都没找到). 二是用selenium的webdriver: sele ...

  9. 使用Python批量下载Plus上的Podcast

    Plus是一个介绍数学之美与实际应用的网络杂志,其中包含了数学知识.轶闻趣事.历史典故等许多精彩的内容.该杂志恰好有一个Podcast栏目,提供了不少采访与讲座的mp3音频.于是, 我使用Python ...

  10. python 批量下载图片

    #coding=utf-8import re,sysimport urllib def getHtml(url): page = urllib.urlopen(url) html = page.rea ...

随机推荐

  1. MySQL加密的性能测试

    这是对MySQL进行加密性能测试的两篇文章系列之二.在第一篇中,我专门使用MySQL的内置的对SSL的支持来 做压力测试,产生了一些令人惊讶的结果. AD:WOT2015 互联网运维与开发者大会 热销 ...

  2. android ViewFlipper的使用

    有个android.widget.ViewAnimator类继承至FrameLayout,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果.该类有如下几个和动画 ...

  3. (原创)android4.4沉浸式标题栏

    趁着清明节的闲工夫,把我的百年不升级一次系统的红米note手机升级到了miuiv6的系统,早就听说android4.4的系统有沉浸式标题栏,一直没有体验过.这次终于有机会了.看了几个手机上常用的应用都 ...

  4. 第三章 Android绘图机制与处理技巧

    1.屏幕尺寸信息 屏幕大小:屏幕对角线长度,单位“寸”:分辨率:手机屏幕像素点个数,例如720x1280分辨率:PPI(Pixels Per Inch):即DPI(Dots Per Inch),它是对 ...

  5. [serverlet][转载: 深入理解HTTP Session]

    [serverlet][转载: 深入理解HTTP Session] 标签(空格分隔): 未分类 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. ...

  6. 使用Teleport Pro离线下载网页所有内容

    在学习生活中,碰到网页中内容太多,如何讲其保存到本地,已方便随时查看呢? 使用Teleport Pro就可以解决问题:     首先下载Teleport Pro V1.54 汉化绿色版的,解压完之后 ...

  7. ASP.NET MVC Controller接收ajax post方式发送过来的json对象或数组数据

    本例旨在说明我的一种Controller接收ajax提交(POST)过来的json对象或数组信息的方式,感觉应该有更好的方式,欢迎提出宝贵意见. JSON.stringify(jsonObj)不支持I ...

  8. (转)WCF入门教程(一)简介

    原文系列来自http://www.cnblogs.com/yank/p/3653160.html 1.WCF是什么? WCF( Windows Communication Foundation), 是 ...

  9. 如何获取外网Ip呢, 终于找到方法了

    临时更换网址:http://20140507.ip138.com/ic.asp 这个网址能同时获取ip和城市名字 上面的网址如何来的呢,其实很简单,随便打开一个获取Ip的网站,比如http://www ...

  10. Oracle怎样方便地查看报警日志错误

    由于报警日志文件很大,而每天都应该查看报警日志(查看有无“ORA-”,Error”,“Failed”等出错信息),故想找到一种比较便捷的方法,查看当天报警日志都有哪些错误. 在网上查了几天的资料,尝试 ...