Rumah >pembangunan bahagian belakang >Tutorial Python >Mengambil data dari API HTTP dengan 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:
. Ini adalah perpustakaan HTTP untuk Python yang menjadikan data HTTP lebih mudah daripada Python's Built-In 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
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:
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:
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:
(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, 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, requests.post
data
requests.post(url, data={'key': 'value'})
requests
Bagaimana cara menghantar fail menggunakan permintaan pos di Python?
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!