Analisis elemen web kertas dinding Bing dan API
Untuk mencipta pemuat turun kertas dinding automatik menggunakan Bing, kita perlu memahami cara berinteraksi dengan API Bing. Matlamatnya adalah untuk mengambil URL kertas dinding dan menyimpannya secara setempat dalam format yang dikehendaki. Kami juga akan meneroka API, elemen imej dan corak URL yang berkaitan.
1. API Kertas Dinding Bing:
Bing menyediakan titik akhir untuk mengakses metadata kertas dindingnya, termasuk URL imej, tajuk dan perihalan. Titik akhir utama yang kami gunakan ialah:
https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US
2. URL Imej dan Muat Turun:
URL imej yang disediakan oleh API selalunya dalam format relatif (bermula dengan /th?id=...). Untuk memuat turun imej, kami perlu menambah URL asas https://www.bing.com.
URL imej selalunya dalam bentuk:
/th?id=OHR.SouthPadre_ZH-CN8788572569_1920x1080.jpg
Kami akan memproses ini untuk mengekstrak maklumat yang diperlukan, seperti nama imej dan sambungan fail, dan menyimpannya dengan sewajarnya.
1. Mengambil Data daripada API Bing:
Langkah pertama ialah menghantar permintaan GET ke API Bing. Ini mengembalikan objek JSON yang mengandungi metadata kertas dinding untuk hari tertentu.
import requests import os # Simulate browser request headers headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36" } # Directory to save wallpapers default_pictures_dir = os.path.join(os.path.expanduser("~"), "Pictures") picture_path = os.path.join(default_pictures_dir, "bing") # Create the directory if it doesn't exist if not os.path.exists(picture_path): os.makedirs(picture_path) # Fetch wallpapers (last 4 days including today) for idx in range(4): # Request Bing's wallpaper metadata api_url = f"https://www.bing.com/HPImageArchive.aspx?format=js&idx={idx}&n=1&mkt=en-US" response = requests.get(api_url, headers=headers) if response.status_code != 200: print(f"Failed to fetch data for idx={idx}, skipping.") continue data = response.json() if not data.get("images"): print(f"No images found for idx={idx}, skipping.") continue # Extract image details image_info = data["images"][0] image_url = "https://www.bing.com" + image_info["url"] image_name = image_info["urlbase"].split("/")[-1] + ".jpg" save_path = os.path.join(picture_path, image_name) # Download the image image_response = requests.get(image_url, headers=headers) if image_response.status_code == 200: with open(save_path, "wb") as f: f.write(image_response.content) print(f"Downloaded: {save_path}") else: print(f"Failed to download image for idx={idx}.")
Ujian Dalam Talian
python3 -c "$(curl -fsSL https://ghproxy.com/https://raw.githubusercontent.com/Excalibra/scripts/refs/heads/main/d-python/get_bing_wallpapers.py)"
Atas ialah kandungan terperinci Pengikis Kertas Dinding Bing Peringkat Kemasukan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!