Python 使用urlib下载美空网页的模特照片

来源:互联网 发布:linux shell怎么退行 编辑:程序博客网 时间:2024/04/29 06:23


         平时在实验室写程序,眼睛盯着显示屏眼睛都晃瞎了,没事的时候看看美女图片,不仅可以缓解视觉疲劳,还有益身心健康。哈哈。于是想起到美空(MOKO)下载点图片收藏一下。

         于是想到用Python来下载一些图片。

         本次主要使用三个库,urllib,urllib2 ,re,前2个用户获取URL对应的HTML文件,re为正则相关的库,可以用于在HTML中匹配查找图片的下载地址。

    urllib 和urllib2都是接受URL请求的相关模块,但是提供了不同的功能。两个最显著的不同如下:

        1.urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。这意味着,你不可以伪装你的User Agent字符串等。

        2.urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有。这是为何urllib常和urllib2一起使用的原因。

首先,分析美空某一页面的HTML代码,找出图片的链接信息:


发现图片链接格式   <img src2=”http://...........jpg“将此链接复制到浏览器,就可以看到图片的源文件,因此正则表达式可以表示为   :repat1 = re.compile(r'<img src2="(http.*\.jpg)"')




</pre><pre class="python" name="code">#encoding=utf-8#http://www.moko.cc/post/1090149.htmlimport urllib,urllib2,re#美空的某一个页面url ='http://www.moko.cc/post/1090030.html'#启动连接con = urllib2.urlopen(url)#读取页面数据html = con.read()#正则表达式,提取图片链接#repat1 = re.compile(r'<img src2="(http.*\.jpg)" title="(.*)" alt')repat1 = re.compile(r'<img src2="(http.*\.jpg)"')result = re.findall(repat1,html)print '+++++++++++++++++++++++++++++++++'#依次打印用正则匹配到的图片链接for ones in result:    #print ones[0],ones[1]     print ones


运行后的控制台输出:


由上面的截图可以看出:我们已得到了图片的源文件地址,下一步就是下载了。

urllib 模块提供的 urlretrieve() 函数。urlretrieve() 方法直接将远程数据下载到本地。

urlretrieve(url, filename=None, reporthook=None, data=None)

  1. 参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
  2. 参数 reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。
  3. 参数 data 指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头。



查看本地文件夹中的图片:


看到了吧,图片下载下来啦。。。。。。。



0 0
原创粉丝点击