Rumah >pembangunan bahagian belakang >Tutorial Python >Pengikis Kertas Dinding Bing Peringkat Kemasukan

Pengikis Kertas Dinding Bing Peringkat Kemasukan

Patricia Arquette
Patricia Arquetteasal
2025-01-04 01:22:39513semak imbas

Entry-Level Bing Wallpaper Scraper

Kerja Persediaan

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.

Komponen Utama:

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

  • idx=0: Indeks kertas dinding (bermula dari hari ini).
  • n=1: Bilangan kertas dinding untuk diambil (dalam kes ini, hanya satu).
  • mkt=en-AS: Kod pasaran/bahasa (dalam kes ini, Inggeris - AS).

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.

Konvensyen Format dan Penamaan:

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.

Proses

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn