#coding=utf-8
'''
Created on 2013-7-17

@author: zinan.zhang
'''

import re
import time
import httplib2
import urllib
from bs4 import BeautifulSoup

#路径
savePath = 'F://TDDOWNLOAD//aNO.4//'

#获取url
def url_xunhuan(url,list):
    return url + list

#下载图片的时候
time.sleep(0.5)#先sleep,再读取数据
"""根据url下载文件,文件名自动从url获取"""
def gDownload(url,savePath):
    #参数检查,现忽略
    fileName = gGetFileName(url)
    #fileName =gRandFilename('jpg')
    gDownloadWithFilename(url,savePath,fileName)
   
"""根据url获取文件名"""
def gGetFileName(url):
    if url==None: return None
    if url=="" : return ""
    arr=url.split("/")
    return arr[len(arr)-1]

"""根据url下载文件,文件名参数指定"""
def gDownloadWithFilename(url,savePath,file):
    #参数检查,现忽略
    try:
        urlopen=urllib.URLopener()
        fp = urlopen.open(url)
        data = fp.read()
        fp.close()
        file=open(savePath + file,'w+b')
        file.write(data)
        print "下载成功:"+ url
        file.close()
    except IOError:
        print "下载失败:"+ url
       
#初始化页面,提取必要信息
def getPage(url):
    userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)'
    headers = {
       'User-Agent': userAgent,
       'Accept-Language':  'zh-CN,zh;q=0.8',
       'Accept': 'text/css,*/*;q=0.1',
       }
    http = httplib2.Http(".cache")
    _, content = http.request(url, 'GET',headers=headers)
    return content

#循环下载列表固定的  ---就是wallpaper,enterdesk等网站
def xuanhuan_down_list():
    list=[]
    url = 'http://tupian.enterdesk.com/2013/mxy/0311/4/'
    temp=10
    for i in range(temp):
        list.append(str(i)+'.jpg')
    for i in range(temp):
        url_list = url_xunhuan(url,list[i])
        gDownload(url_list,savePath)
        time.sleep(0.2)

#爬网获取url
def spider_url(url):
    page = getPage(url)
    dom = BeautifulSoup(page)
    srcs = [x['src'] for x in dom.findAll('img')]
    #成功获取url
    return srcs[0]
   
#循环下载列表随机的 ---就是ZOL桌面壁纸下载
def xuanhuan_down_suiji():
    try:
        temp=25
        i=88
        j=i
        while (i <= j+temp):
            #http://desk.zol.com.cn/showpic/1920x1200_30688_33.html
            url = 'http://desk.zol.com.cn/showpic/1920x1200_12'+str(i)+'_37.html'
            src_url = spider_url(url)
            gDownload(src_url,savePath)
            time.sleep(0.1)
            i+=1
    except IOError:
        print "url获取失败!"

if __name__ == "__main__":
    #gDownload(url,savePath)
    '''
    #批量下载序号固定的图片
    xuanhuan_down_list()
    '''
    '''
    #批量下载隐藏jpg路径的文件
    xuanhuan_down_suiji()
    '''
    #批量下载文件
   
   
   
    print '下载完成!'

python下载文件(图片)源码,包含爬网内容(爬url),可保存cookie的更多相关文章

  1. Asp.Net Web Api 2 实现多文件打包并下载文件示例源码_转

    一篇关于Asp.Net Web Api下载文件的文章,之前我也写过类似的文章,请见:<ASP.NET(C#) Web Api通过文件流下载文件到本地实例>本文以这篇文章的基础,提供了Byt ...

  2. android源码-安卓源码-Android源码下载-安卓游戏源码

    android源码   高仿精仿金山手机卫士应用源码V1.2 高仿精仿金山手机卫士应用源码,该应用的级别实现了金山卫士的级别功能了,可以说跟现实中我们使用的金山卫士应用的功能几乎差不 人气:9286  ...

  3. Java文件操作源码大全

    Java文件操作源码大全 1.创建文件夹 52.创建文件 53.删除文件 54.删除文件夹 65.删除一个文件下夹所有的文件夹 76.清空文件夹 87.读取文件 88.写入文件 99.写入随机文件 9 ...

  4. 实现目标文件与源码分开的makefile测试实验

    uboot提供了两种编译策略,即可以将生成的目标文件与源码混在一起,也可以将生成的目标文件与源码分开.通过对uboot Makefile的分析,笔者编写了一个简单的实现这种功能的Makfile. 顶层 ...

  5. Git下载Spring项目源码并编译为Eclipse

    1)当前系统中安装了gradle,如果为安装,可以从:http://www.gradle.org/downloads,,下载完后进行解压到任意盘符,然后增加环境变量GRADLE_HOME,并在环境变量 ...

  6. eclipse查看class文件的源码

    eclipse查看class文件的源码: 1.网上下载jadClipse的jar包和执行文件jad.exe和 net.sf.jadclipse_3.3.0.jar. 2.把上面下载的jar包放在ecp ...

  7. java编程思想第四版中net.mindview.util包下载,及源码简单导入使用

    在java编程思想第四版中需要使用net.mindview.util包,大家可以直接到http://www.mindviewinc.com/TIJ4/CodeInstructions.html 去下载 ...

  8. python重试库retryiny源码剖析

    上篇博文介绍了常见需要进行请求重试的场景,本篇博文试着剖析有名的python第三方库retrying源码. 在剖析其源码之前,有必要讲一下retrying的用法,方便理解. 安装: pip insta ...

  9. Eclipse安装反编译插件,查看.class文件的源码

    2017-08-24 这样我们就可以通过Eclipse查看.class文件的源码了. 1.参考别人的博客,亲测有效 https://www.cnblogs.com/JealousGirl/p/setu ...

  10. Django的settings文件部分源码分析

    Django的settings文件部分源码分析 在编写Django项目的过程中, 其中一个非常强大的功能就是我们可以在settings文件配置许多选项来完成我们预期的功能, 并且这些配置还必须大写, ...

随机推荐

  1. Flex 全屏显示方法

    1,修改html-template下的index.template.html文件…增加四行 1</html> 上述文件增加了四行…见我文中有提示 2,Mxml文件: 假如一个button按 ...

  2. Android JNI入门第一篇——HelloJni

    android支持使用NDK开发C程序,关于配置NDK环境问题应该不用再赘述了,这个网上有很多,这里通过一篇实例来讲述简单的JNI开发,大家可以参考这篇文章(Get Your Eclipse-Inte ...

  3. Oracle PL/SQL 游标

    在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,ORACLE会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向该区的一个指针,或是命名一个 ...

  4. c#关于EXCEL导入数据库的做法

    以下例子转载:互联网 先在类中定义一个方法名为ExecleDs的方法,用于将Excel表里的数据填充到DataSet中,代码如下 public DataSet ExecleDs(string file ...

  5. 使用JQuery插件,排序Gridview的某个字段

    1. 前台代码 <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server" ...

  6. 如何在UILable上添加点击事件?

    最近开始学习iOS开发,今天上来写第一个iOS笔记 昨天碰到一个需求,在UILable上添加点击事件,网上找了写资料,有人建议用透明的UIButton覆盖,有人建议写一个集成自UILable的类,扩展 ...

  7. s3c2440栈分配情况(fl2440裸机 stack)

    //2440INIT.S ;The location of stacks UserStack EQU (_STACK_BASEADDRESS-0x3800) ;0x33ff4800 ~ SVCStac ...

  8. 关于Spring的BeanPostProcessor

    BeanPostProcessor接口作用是:如果我们需要在Spring容器完成Bean的实例化.配置和其他的初始化前后添加一些自己的逻辑处理,我们就可以定义一个或者多个BeanPostProcess ...

  9. jQuery源码,匿名函数自执行

    jQuery框架的首尾是这样写的()(), (function(window){//这个window是个入参,随便起个名字都行 //这里面全都是js代码 })(window)//这个括号里的windo ...

  10. CSS3 总结-2

    过渡属性 下面的表格列出了所有的转换属性: 属性 描述 CSS transition 简写属性,用于在一个属性中设置四个过渡属性. 3 transition-property 规定应用过渡的 CSS ...