Python下載網頁圖片

#coding:utf-8
import requests
from bs4 import BeautifulSoup
import re
DownPath = "/jiaoben/python/meizitu/pic/"
import urllib
head = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
TimeOut = 5
PhotoName = 0
c = '.jpeg'
PWD="/jiaoben/python/meizitu/pic/"
for x in range(1,4):
  site = "http://www.meizitu.com/a/qingchun_3_%d.html" %x
  Page = requests.session().get(site,headers=head,timeout=TimeOut)
  Coding =  (Page.encoding)
  Content = Page.content#.decode(Coding).encode('utf-8')
  ContentSoup = BeautifulSoup(Content)
  jpg = ContentSoup.find_all('img',{'class':'scrollLoading'})
  for photo in jpg:
    PhotoAdd = photo.get('data-original')
    PhotoName +=1
    Name =  (str(PhotoName)+c)
    r = requests.get(PhotoAdd,stream=True)
    with open(PWD+Name, 'wb') as fd:
        for chunk in r.iter_content():
                fd.write(chunk)
print ("You have down %d photos" %PhotoName)

 


# -*- coding:utf-8 -*-  
import urllib.request  
path = "D:\\Download"  
url = "http://pic2.sc.chinaz.com/files/pic/pic9/201309/apic520.jpg"  
name ="D:\\download\\1.jpg"  
#保存文件時候注意類型要匹配,如要保存的圖片爲jpg,則打開的文件的名稱必須是jpg格式,不然會產生無效圖片  
conn = urllib.request.urlopen(url)  
f = open(name,'wb')  
f.write(conn.read())  
f.close()  
print('Pic Saved!')   

很簡單,打開個url連接,而後save到某個文件夾下就能夠了。html

有時候不如不想輸入路徑,那就須要用os模塊來修改當前路徑 python

os.chdir("D:\\download")  
os.getcwd()  

這樣保存的文件就只須要名字就能夠了api

f = open('1.jpg','wb')  

 這上面的url是給定的,只能下載一張圖片,若是要是批量下載,就須要用循環來判斷不一樣的url,session

 下面是從其餘地方看到的一個例子,就是把圖片url中的圖片名字修改,而後就能夠循環保存了,不過也是先肯定了某個url函數

來源:http://www.oschina.net/code/snippet_1016509_21961 開源中國社區,本身修改的地方是提出了相同代碼def了個函數 編碼

import os  
import urllib.request  
def rename(name):  
    if len(name) == 2:  
        name = '0' + name + '.jpg'  
    elif len(name) == 1:  
        name = '00' + name + '.jpg'  
    else:  
        name = name + '.jpg'  
    return name  
     
os.chdir("D:\\download")  
os.getcwd()  
count = 1  
name=str(count)  
name = rename(name)  
print(name)  
url = 'http://bgimg1.meimei22.com/list/2012-5-24/2/sa' + name  
while count < 15:  
    a = urllib.request.urlopen(url)  
    f = open(name, "wb")  
    f.write(a.read())  
    f.close()  
    print(url + ' Saved!')     
    count = count + 1  
    name=str(count)  
    name = rename(name)  
    print(name)  
    url = 'http://bgimg1.meimei22.com/list/2012-5-24/2/sa' + name  
    try:  
        a = urllib.request.urlopen(url)  
        pass  
    except (Exception) as e:  
        print(e)   
    else:  
        pass  
else:  
    print(url + ' not found')  

 固然也能夠本身創建http鏈接,而後動態獲取.jpg的圖片  url

url = "desk.zol.com.cn"  
conn = http.client.HTTPConnection(url)  
conn.request("GET", "/dongman/")  
r = conn.getresponse()  
print (r.status, r.reason)  
data1 = r.read()#.decode('utf-8') #編碼根據實際狀況酌情處理

 開始時候寫的總是提示目標計算機主動拒絕, 後來才發現我選的函數是HTTPSConnection() ,固然會被拒絕了,這一點應該注意,要選擇HTTPConnection()spa

相關文章
相關標籤/搜索