python爬蟲之圖片下載APP1.0

是羅羅攀啊發表於2016-12-22

今天給大家來個好玩一點的,運用python爬取圖片到本地,網站為https://www.pexels.com/
這個網站為外文網,所以搜尋圖片要用英語,今天要做的就是在python中進行搜尋和下載圖片,做一個網頁版的APP。

直接上程式碼

from bs4 import BeautifulSoup
import requests

headers ={
    `accept`:`text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8`,
    `Cookie`:`__cfduid=dcb472bad94316522ad55151de6879acc1479632720; locale=en; _ga=GA1.2.1575445427.1479632759; _gat=1; _hjIncludedInSample=1`,
    `User-Agent`:`Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36`
}

url_path = `https://www.pexels.com/search/`
content= input(`請輸入你要下載的圖片:`)
url = url_path + content + `/`
wb_data = requests.get(url,headers=headers)
soup = BeautifulSoup(wb_data.text,`lxml`)
imgs = soup.select(`a > img`)
list = []
for img in imgs:
    photo = img.get(`src`)
    list.append(photo)

path = `C://Users/Administrator/Desktop/photo/`

i = 1
for item in list:
    if item==None:
        pass
    elif `?` in item:
        data = requests.get(item,headers=headers)
        fp = open(path+content+str(i)+`.jpeg`,`wb`)
        fp.write(data.content)
        fp.close
        i = i+1
    else:
        data = requests.get(item, headers=headers)
        fp = open(path+item[-10:],`wb`)
        fp.write(data.content)
        fp.close()

分析程式碼

1我首先網站上分別搜尋snow和girl,網站分別為:https://www.pexels.com/search/snow/
https://www.pexels.com/search/girl/
所以我利用input函式進行輸入,然後自己構建url。
2解析和找到圖片的url放到list中,這部分就不多講了。
3之前用urlretrieve來下載一直報錯,可能是外文網的原因,所以我把取到的圖片的url再request一次,並加上了headers。
4為什麼要用判斷了?因為這個網站我爬取出現了None,我把它pass掉,其它有jpeg格式的,有png格式的,所以要分別下載。


相關文章