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

Pengikis Kertas Dinding Bing Peringkat Kemasukan

Patricia Arquette
Lepaskan: 2025-01-04 01:22:39
asal
504 orang telah melayarinya

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

Salin selepas log masuk
  • 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
Salin selepas log masuk

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}.")

Salin selepas log masuk

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)"
Salin selepas log masuk

Atas ialah kandungan terperinci Pengikis Kertas Dinding Bing Peringkat Kemasukan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan