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到某個文件夾下就可以了。

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

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

這樣保存的文件就只需要名字就可以了

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

 這上面的url是給定的,只能下載一張圖片,如果要是批量下載,就需要用循環來判斷不同的url,

 下面是從其他地方看到的一個例子,就是把圖片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 = "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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM