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.
- Dapatkan data.
- Gunakan data untuk menyelesaikan operasi berguna.
. 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
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:
(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 menggunakanrequests.get(url)
, dan menghantar permintaan pos, anda boleh menggunakanrequests.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 menggunakanresponse.text
atauresponse.json()
untuk mengakses kandungan respons. Anda juga boleh menggunakanresponse.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
fungsiheaders
. 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 parameterresponse.cookies
fungsirequests
.cookies
-
Bagaimana untuk menghantar data borang menggunakan permintaan pos di Python? 3 Sebagai contoh,
Fail boleh dihantar menggunakan permintaan pos di Python dengan meluluskannya sebagai kamus ke parameter. 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? 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? Perpustakaanrequests
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!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Python's Unittest and Pytest adalah dua kerangka ujian yang digunakan secara meluas yang memudahkan penulisan, penganjuran dan menjalankan ujian automatik. 1. Kedua -duanya menyokong penemuan automatik kes ujian dan menyediakan struktur ujian yang jelas: Unittest mentakrifkan ujian dengan mewarisi kelas ujian dan bermula dengan ujian \ _; Pytest lebih ringkas, hanya memerlukan fungsi bermula dengan ujian \ _. 2. Mereka semua mempunyai sokongan dakwaan terbina dalam: Unittest menyediakan kaedah AssertEqual, AssertTrue dan lain-lain, manakala PYTest menggunakan pernyataan menegaskan yang dipertingkatkan untuk memaparkan butiran kegagalan secara automatik. 3. Semua mempunyai mekanisme untuk mengendalikan penyediaan ujian dan pembersihan: un

Pythonisidealfordataanalysisysisduetonumpyandpandas.1) numpyexcelsatnumericalcomputationswithfast, multi-dimensiArarraySandvectorizedoperationsLikenp.sqrt ()

Pengaturcaraan Dinamik (DP) mengoptimumkan proses penyelesaian dengan memecahkan masalah kompleks ke dalam subproblem yang lebih mudah dan menyimpan hasilnya untuk mengelakkan pengiraan berulang. Terdapat dua kaedah utama: 1. Top-down (Hafalan): Recursif menguraikan masalah dan menggunakan cache untuk menyimpan hasil pertengahan; 2. Bottom-Up (Jadual): Bangun secara beransur-ansur dari keadaan asas. Sesuai untuk senario di mana nilai maksimum/minimum, penyelesaian optimum atau subproblem yang bertindih diperlukan, seperti urutan Fibonacci, masalah backpacking, dan lain -lain.

Untuk melaksanakan iterator tersuai, anda perlu menentukan kaedah __iter__ dan __Next__ di dalam kelas. ① Kaedah __iter__ mengembalikan objek iterator itu sendiri, biasanya diri sendiri, bersesuaian dengan persekitaran berulang seperti untuk gelung; ② Kaedah __Next__ mengawal nilai setiap lelaran, mengembalikan elemen seterusnya dalam urutan, dan apabila tidak ada lagi item, pengecualian hentian harus dibuang; ③ Status mesti dikesan dengan betul dan keadaan penamatan mesti ditetapkan untuk mengelakkan gelung tak terhingga; ④ Logik kompleks seperti penapisan talian fail, dan perhatikan pembersihan sumber dan pengurusan memori; ⑤ Untuk logik mudah, anda boleh mempertimbangkan menggunakan hasil fungsi penjana sebaliknya, tetapi anda perlu memilih kaedah yang sesuai berdasarkan senario tertentu.

Trend masa depan dalam Python termasuk pengoptimuman prestasi, jenis yang lebih kuat, peningkatan runtime alternatif, dan pertumbuhan berterusan bidang AI/ML. Pertama, Cpython terus mengoptimumkan, meningkatkan prestasi melalui masa permulaan yang lebih cepat, pengoptimuman panggilan fungsi dan operasi integer yang dicadangkan; Kedua, jenis petikan sangat terintegrasi ke dalam bahasa dan alat untuk meningkatkan pengalaman keselamatan dan pembangunan kod; Ketiga, runtime alternatif seperti Pyscript dan Nuitka menyediakan fungsi baru dan kelebihan prestasi; Akhirnya, bidang AI dan Sains Data terus berkembang, dan perpustakaan yang muncul mempromosikan pembangunan dan integrasi yang lebih cekap. Trend ini menunjukkan bahawa Python sentiasa menyesuaikan diri dengan perubahan teknologi dan mengekalkan kedudukan utama.

Modul soket Python adalah asas pengaturcaraan rangkaian, menyediakan fungsi komunikasi rangkaian peringkat rendah, sesuai untuk membina aplikasi klien dan pelayan. Untuk menyediakan pelayan TCP asas, anda perlu menggunakan socket.socket () untuk membuat objek, mengikat alamat dan port, panggilan. Listen () untuk mendengar sambungan, dan menerima sambungan klien melalui .accept (). Untuk membina klien TCP, anda perlu membuat objek soket dan panggilan .Connect () untuk menyambung ke pelayan, kemudian gunakan .sendall () untuk menghantar data dan .recv () untuk menerima respons. Untuk mengendalikan pelbagai pelanggan, anda boleh menggunakan 1. Threads: Mulakan benang baru setiap kali anda menyambung; 2. Asynchronous I/O: Sebagai contoh, Perpustakaan Asyncio dapat mencapai komunikasi yang tidak menyekat. Perkara yang perlu diperhatikan

Polimorfisme adalah konsep teras dalam pengaturcaraan berorientasikan objek Python, merujuk kepada "satu antara muka, pelbagai pelaksanaan", yang membolehkan pemprosesan bersatu pelbagai jenis objek. 1. Polimorfisme dilaksanakan melalui penulisan semula kaedah. Subkelas boleh mentakrifkan semula kaedah kelas induk. Sebagai contoh, kaedah bercakap () kelas haiwan mempunyai pelaksanaan yang berbeza dalam subkelas anjing dan kucing. 2. Penggunaan praktikal polimorfisme termasuk memudahkan struktur kod dan meningkatkan skalabilitas, seperti memanggil kaedah cabutan () secara seragam dalam program lukisan grafik, atau mengendalikan tingkah laku umum watak -watak yang berbeza dalam pembangunan permainan. 3. Polimorfisme pelaksanaan Python perlu memenuhi: Kelas induk mentakrifkan kaedah, dan kelas kanak -kanak mengatasi kaedah, tetapi tidak memerlukan warisan kelas induk yang sama. Selagi objek melaksanakan kaedah yang sama, ini dipanggil "jenis itik". 4. Perkara yang perlu diperhatikan termasuk penyelenggaraan

Jawapan teras kepada pengirim senarai Python adalah menguasai sintaks [Start: End: Step] dan memahami kelakuannya. 1. Format asas pengirim senarai adalah senarai [Mula: akhir: langkah], di mana permulaan adalah indeks permulaan (termasuk), akhir adalah indeks akhir (tidak termasuk), dan langkah adalah saiz langkah; 2. Omit Mula secara lalai bermula dari 0, endek akhir secara lalai hingga akhir, omite langkah secara lalai kepada 1; 3. Gunakan my_list [: n] untuk mendapatkan item n pertama, dan gunakan my_list [-n:] untuk mendapatkan item n yang terakhir; 4. Gunakan langkah untuk melangkau unsur -unsur, seperti my_list [:: 2] untuk mendapatkan angka, dan nilai langkah negatif dapat membalikkan senarai; 5. Kesalahpahaman biasa termasuk indeks akhir tidak
