iT邦幫忙

2

判斷imgur圖片有效性

  • 分享至 

  • xImage
  •  

觀察到如果使用requests函式庫取得imgur圖片資源的話回傳是remove.png或是說導回首頁的話一般代表圖片不存在,分享看看希望知道更簡單判斷方法的朋友幫忙反饋,或是給也許沒有觀察到這個現象的朋友參考。

  • Header加入的User-Agent可以在瀏覽器中搜尋關鍵字 "my user agent"取得,之所以要加入的原因雖不是完全肯定但個人理解如果沒加上會被Imgur的反爬蟲/反自動化/反機器人擋下
  • 之所以使用requests庫發送head請求而不是get是因為沒有要用到response Body,兩者就差別在有無response Body
import requests
def is_imgur_image_valid(url):
    """
    檢查 Imgur 圖片 URL 是否有效。

    判斷邏輯:
    - 使用 HEAD 請求追蹤重定向,檢查最終 URL。
    - 否則,判斷為有效圖片。
    - 任何請求相關錯誤都視為圖片無效。

    Args:
        url (str): Imgur 圖片的 URL。

    Returns:
        bool: 如果圖片有效則返回 True,否則返回 False。
    """
    headers = {
        "User-Agent": "your agent try google my user agent in a browser",
    }

    try:
        # 使用 HEAD 請求並允許追蹤重定向
        response = requests.head(url, headers=headers, allow_redirects=True, timeout=10)
        response.raise_for_status() # 如果最終狀態碼是 4xx/5xx 會拋出異常

        final_url = response.url

        # 判斷最終 URL 是否導向 Imgur 首頁或 removed.png
        if final_url == "https://imgur.com/" or final_url == "https://i.imgur.com/" or final_url == "https://i.imgur.com/removed.png":
            return False

        # 如果沒有拋出異常且沒有導向首頁或無效頁面,則判斷為有效圖片
        return True

    except requests.exceptions.RequestException:
        # 處理所有請求相關錯誤 (如網路連接問題、超時、DNS 錯誤、4xx/5xx 等)
        return False
    except Exception:
        # 處理其他未預期的錯誤
        return False

語言是Python,有效的圖片會回傳True,無效的圖片會回傳False


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言