iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
Software Development

讓python 解決麻煩事系列 第 12

自動批次處理旅遊圖片

  • 分享至 

  • xImage
  •  

一開始我們需要得到img的url
可以利用前面的範例將旅遊景點使用CSV匯出檔案
取得一開始的url,以下範例程式碼就不多解釋,不清楚的地方可以看連結那篇。

import requests
from bs4 import BeautifulSoup
import csv

response = requests.get("https://www.taiwan.net.tw/")
soup = BeautifulSoup(response.text, "html.parser")

viewpoints = soup.find_all("a", class_="megamenu-btn")
li_counter = []
PATCH_COLUMNS_IMG = [
    "url"
]
for viewpoint in viewpoints:
    
    url = viewpoint.get("href")
    url_response = requests.get("https://www.taiwan.net.tw/"+url)
    url_soup = BeautifulSoup(url_response.text, "html.parser")
    de_viewpoints=url_soup.find_all("a",class_="circularbtn")
    for de_viewpoint in de_viewpoints:
        print(de_viewpoint.find("img",class_="lazyload").get("data-src"))
        _counter = {}
        _counter["url"] = de_viewpoint.find("img",class_="lazyload").get("data-src")
        li_counter.append(_counter)

 
with open('viewpoint_img_url.csv', 'w', encoding='utf-8-sig', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=PATCH_COLUMNS_IMG)
    writer.writeheader()
    writer.writerows(li_counter)

將url的資料匯出成csv後,第二步驟需要讀取後存成圖檔。
那這邊使用for迴圈,存到img資料夾底下。使用count將每次的檔名錯開。

import requests
import pandas as pd

df = pd.read_csv("viewpoint_img_url.csv", keep_default_na=False)
count=0
for key, val in df.iterrows():
    with open('img/pic'+str(count)+'.jpg', 'wb') as handle:
        response = requests.get(val["url"], stream=True)

        if not response.ok:
            print(response)

        for block in response.iter_content(1024):
            if not block:
                break

            handle.write(block)
    count+=1

第三步驟將img資料夾裡面的圖片檔轉成灰白,首先我們先需要安裝Pillow套件

pip install Pillow

接下來讀取每一張圖片,轉存呈灰白。這邊imgs.conbert使用L,這模式為灰色影像,每個畫素用8個bit表示,0表示黑色,255表示白色,越接近0就越黑,反之越亮。

from PIL import Image

for i in range(21):
    imgs = Image.open('img/pic'+str(i)+'.jpg')
    image = imgs.convert('L')
    image.save('img/grayscale/pic_b_'+str(i)+'.jpg')

那這樣就完成了。


上一篇
下載旅遊景點圖片
下一篇
將景點圖片加上浮水印及最佳化
系列文
讓python 解決麻煩事20
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言