Rumah >pembangunan bahagian belakang >Tutorial Python >Mengambil data dari API HTTP dengan Python

Mengambil data dari API HTTP dengan Python

Christopher Nolan
Christopher Nolanasal
2025-02-10 15:11:12755semak imbas

Fetching Data from an HTTP API with Python

python dengan cekap mengakses API HTTP: Permintaan Perpustakaan dan Permintaan Cache

Artikel ini dikutip dari "Python Praktikal", dan pengarang Stuart menunjukkan bagaimana untuk mengakses API HTTP dengan mudah menggunakan Python dan beberapa modul pihak ketiga.

Kebanyakan kes, memproses data pihak ketiga memerlukan akses kepada API HTTP, iaitu, menghantar permintaan HTTP ke laman web yang direka untuk dibaca oleh mesin dan bukan secara manual. Data API biasanya dalam format yang boleh dibaca mesin, biasanya dalam JSON atau XML. Mari lihat bagaimana untuk mengakses API HTTP menggunakan Python.

Prinsip asas menggunakan API HTTP adalah mudah:

    Hantar permintaan HTTP ke URL API, yang mungkin termasuk beberapa maklumat pengesahan (seperti kunci API) untuk membuktikan bahawa kami diberi kuasa.
  1. Dapatkan data.
  2. Gunakan data untuk menyelesaikan operasi berguna.
Perpustakaan Standard Python menyediakan fungsi yang cukup untuk melakukan semua ini tanpa sebarang modul tambahan, tetapi ia akan menjadikan kerja kita lebih mudah jika kita menggunakan beberapa modul pihak ketiga untuk memudahkan proses. Yang pertama ialah modul

. Ini adalah perpustakaan HTTP untuk Python yang menjadikan data HTTP lebih mudah daripada Python's Built-In dan boleh dipasang menggunakan requests. urllib.request python -m pip install requests Untuk menunjukkan kemudahan penggunaannya, kami akan menggunakan API Pixabay (didokumenkan di sini). Pixabay adalah laman web gambar di mana semua imej boleh digunakan semula, menjadikannya sumber yang sangat mudah. Kami akan memberi tumpuan kepada gambar buah. Kemudian apabila memanipulasi fail, kami akan menggunakan gambar buah yang dikumpulkan, tetapi sekarang kami hanya ingin mencari gambar buah.

Pertama, kita akan melihat gambar -gambar yang tersedia di Pixabay dengan cepat. Kami akan merebut seratus gambar, melayari mereka dengan cepat, dan pilih yang kami mahukan. Untuk melakukan ini, kita memerlukan kunci API Pixabay, jadi kita perlu membuat akaun dan kemudian mendapatkan kunci dari bahagian imej carian dokumen API.

Permintaan modul

Versi asas menggunakan modul

untuk membuat permintaan HTTP ke API termasuk membina URL HTTP, membuat permintaan, dan membaca respons. Di sini, responsnya dalam format JSON. Modul

menjadikan setiap langkah sangat mudah. Parameter API adalah kamus python, dan fungsi requests membuat panggilan. Oleh itu, panggilan mudah kelihatan seperti ini: requests get() requests Ini akan mengembalikan objek python, dan seperti yang dicadangkan oleh dokumentasi API, kita dapat melihat pelbagai bahagiannya: .json

Untuk mendapatkan seratus hasil, kita hanya boleh membuat keputusan untuk membuat lima panggilan, masing -masing mendapat 20 hasil, tetapi ini tidak cukup kuat. Pendekatan yang lebih baik ialah gelung melalui halaman permintaan sehingga anda mendapat seratus hasil yang dikehendaki dan kemudian berhenti. Ini menghalang masalah apabila Pixabay mengubah bilangan keputusan lalai (mis. Hingga 15). Ia juga membolehkan kita mengendalikan keadaan di mana istilah carian tidak mempunyai seratus gambar. Oleh itu, kami menggunakan gelung while, meningkatkan nombor halaman setiap kali, dan jika kami telah mencapai 100 imej, atau tidak ada imej untuk mendapatkan, kami keluar dari gelung:

CACHE HTTP Permintaan

Adalah idea yang baik untuk mengelakkan membuat permintaan yang sama kepada API HTTP beberapa kali. Banyak API mempunyai sekatan penggunaan untuk mengelakkan berlebihan oleh pemohon, dan permintaan mengambil masa dan usaha. Kita harus cuba mengelak daripada menduplikasi permintaan sebelumnya. Nasib baik, ada cara yang berguna untuk melakukan ini apabila menggunakan modul Python's requests: Pasang python -m pip install requests-cache menggunakan requests-cache. Ini akan merekodkan apa -apa panggilan HTTP yang kami buat dan menyimpan hasilnya. Kemudian, kemudian jika kita membuat panggilan yang sama sekali lagi, kita mendapat hasil yang disimpan secara tempatan tanpa perlu mengakses API lagi. Ini menjimatkan masa dan jalur lebar. Untuk menggunakan requests_cache, mengimportnya dan membuat CachedSession dan kemudian gunakan session.get bukan requests.get untuk mendapatkan URL, kami akan mendapat manfaat caching tanpa usaha tambahan:

Menjana output

Untuk melihat hasil pertanyaan, kita perlu memaparkan gambar di suatu tempat. Cara yang mudah adalah untuk membuat halaman HTML yang mudah untuk memaparkan setiap imej. Pixabay menyediakan gambar kecil kecil untuk setiap imej, yang dipanggil previewURL dalam respons API, jadi kami boleh membuat halaman HTML untuk memaparkan semua gambar kecil ini dan menghubungkannya ke halaman Pixabay utama - dari mana kita boleh memilih muat turun gambar yang kita mahu dan tandatangan jurugambar. Oleh itu, setiap imej di halaman mungkin kelihatan seperti ini:

kita boleh membinanya dari senarai images menggunakan pemahaman senarai dan kemudian gunakan "n".join() untuk menggabungkan semua hasil ke dalam rentetan besar:

Kemudian, jika kita menulis halaman HTML yang sangat mudah dengan senarai itu, mudah membukanya dalam pelayar web, dengan cepat melihat semua hasil carian yang kita dapat dari API dan klik mana -mana daripada mereka untuk melompat muat turun ke yang penuh Pixabay Page:

Fetching Data from an HTTP API with Python

Artikel ini dikutip dari Python praktikal dan boleh dibeli di peruncit SitePoint Premium dan e-book.

(berikut adalah FAQs, yang telah ditulis semula dan diselaraskan mengikut teks asal)

Soalan -soalan yang sering ditanya mengenai mendapatkan data dengan Python's HTTP API (FAQs)

  • Apakah perbezaan antara http dan https? HTTP adalah protokol pemindahan hiperteks, dan HTTPS adalah protokol pemindahan hiperteks yang selamat. Perbezaan utama ialah HTTPS menggunakan sijil SSL untuk mewujudkan sambungan yang disulitkan yang selamat antara pelayan dan klien, sementara HTTP tidak. Ini menjadikan HTTP lebih selamat apabila memindahkan data sensitif seperti maklumat kad kredit atau kelayakan log masuk.

  • Bagaimana HTTP berfungsi di Python? Pelbagai perpustakaan boleh digunakan dalam Python untuk mengeluarkan permintaan HTTP, yang paling biasa digunakan ialah requests. Perpustakaan ini membolehkan anda menghantar permintaan HTTP dan respons proses, termasuk pemprosesan kuki, membentuk data, fail pelbagai bahagian, dan banyak lagi. Ia adalah alat yang berkuasa untuk berinteraksi dengan perkhidmatan web dan boleh digunakan dalam pelbagai aplikasi.

  • Apakah kaedah HTTP biasa? Bagaimana menggunakannya di Python? Kaedah HTTP yang paling biasa adalah mendapatkan, pos, meletakkan, memadam, kepala, pilihan, dan patch. Di Python, anda boleh menggunakan perpustakaan requests untuk menggunakan kaedah ini. Sebagai contoh, untuk menghantar permintaan GET, anda boleh menggunakan requests.get(url), dan menghantar permintaan pos, anda boleh menggunakan requests.post(url, data).

  • Bagaimana untuk mengendalikan respons HTTP dalam Python? Apabila anda menggunakan perpustakaan requests untuk menghantar permintaan HTTP di Python, anda mendapat objek respons. Objek ini mengandungi respons pelayan terhadap permintaan anda. Jika respons dalam format JSON, anda boleh menggunakan response.text atau response.json() untuk mengakses kandungan respons. Anda juga boleh menggunakan response.status_code untuk menyemak kod status respons.

  • Bagaimana menggunakan tajuk HTTP di Python? Anda boleh menggunakannya dalam python dengan melewati tajuk HTTP sebagai kamus ke parameter requests fungsi headers. Sebagai contoh, . Header boleh digunakan untuk memberikan maklumat tambahan mengenai permintaan atau klien, seperti ejen pengguna, jenis kandungan, kebenaran, dan sebagainya. requests.get(url, headers={'User-Agent': 'my-app'})

  • Bagaimana menangani kuki di Python? cookies boleh diproses dalam python menggunakan atribut objek respons. Anda boleh mengakses kuki yang dihantar oleh pelayan menggunakan cookies dan hantar kuki ke pelayan dengan lulus mereka sebagai kamus ke parameter response.cookies fungsi requests. cookies

  • Bagaimana untuk menghantar data borang menggunakan permintaan pos di Python? 3 Sebagai contoh, . Perpustakaan akan mengodkan data secara automatik dalam format yang betul. requests.post data requests.post(url, data={'key': 'value'}) requests Bagaimana cara menghantar fail menggunakan permintaan pos di Python?

    Fail boleh dihantar menggunakan permintaan pos di Python dengan meluluskannya sebagai kamus ke parameter
  • fungsi
  • . Kamus harus mengandungi nama medan fail sebagai kunci, dan tuple yang mengandungi nama fail dan objek fail sebagai nilai.

  • Bagaimana menangani kesilapan dan pengecualian perpustakaan requests di Python? Perpustakaan requests di Python melemparkan pengecualian untuk jenis kesilapan tertentu, seperti kesilapan rangkaian atau masa tamat. Anda boleh menggunakan cubaan/kecuali blok untuk menangkap pengecualian ini dan mengendalikannya dengan sewajarnya. Anda juga boleh menyemak kod status respons untuk mengendalikan ralat HTTP.

  • Bagaimana membuat permintaan HTTP yang tidak segerak di Python? Anda boleh menggunakan perpustakaan aiohttp untuk mengeluarkan permintaan HTTP yang tidak disengajakan di Python. Perpustakaan ini membolehkan anda menghantar permintaan HTTP secara asynchronously dan proses respons, yang dapat meningkatkan prestasi aplikasi anda dengan ketara apabila mengendalikan sejumlah besar permintaan.

Atas ialah kandungan terperinci Mengambil data dari API HTTP dengan Python. 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