Rumah > pembangunan bahagian belakang > Tutorial Python > 11 postur dimuat turun menggunakan Python, setiap satu lebih maju daripada yang terakhir

11 postur dimuat turun menggunakan Python, setiap satu lebih maju daripada yang terakhir

WBOY
Lepaskan: 2023-05-15 16:31:06
ke hadapan
756 orang telah melayarinya

使用 Python 下载的11种姿势,一种比一种高级

Di bawah anda akan belajar bagaimana untuk mengatasi pelbagai cabaran yang mungkin anda hadapi, seperti memuat turun fail diubah hala, memuat turun fail besar, melengkapkan muat turun berbilang benang dan strategi lain.

1. Menggunakan permintaan

Anda boleh menggunakan modul permintaan untuk memuat turun fail daripada URL.

Pertimbangkan kod berikut:

使用 Python 下载的11种姿势,一种比一种高级

Anda hanya mendapatkan URL menggunakan kaedah get modul permintaan dan simpan hasilnya ke dalam pembolehubah yang dipanggil "myfile" tengah. Kemudian, tulis kandungan pembolehubah ini pada fail.

2. Menggunakan wget

使用 Python 下载的11种姿势,一种比一种高级

Anda juga boleh menggunakan modul wget Python untuk memuat turun fail daripada URL. Anda boleh memasang modul wget menggunakan pip dengan arahan berikut:

Pertimbangkan kod berikut, yang akan kami gunakan untuk memuat turun imej logo untuk Python.

使用 Python 下载的11种姿势,一种比一种高级

Dalam kod ini, URL dan laluan (tempat imej akan disimpan) dihantar ke kaedah muat turun modul wget.

3. Muat turun fail diubah hala

Dalam bahagian ini, anda akan belajar cara menggunakan permintaan untuk memuat turun fail daripada URL yang akan diubah hala ke yang lain dengan .pdf URL fail . URL kelihatan seperti ini:

使用 Python 下载的11种姿势,一种比一种高级

Untuk memuat turun fail pdf ini, gunakan kod berikut:

使用 Python 下载的11种姿势,一种比一种高级

Dalam perenggan ini Dalam kod, langkah pertama yang kami tentukan ialah URL. Kemudian, kami menggunakan kaedah dapatkan modul permintaan untuk mendapatkan URL. Dalam kaedah dapatkan, kami menetapkan allow_redirects kepada True, yang akan membenarkan ubah hala dalam URL dan kandungan yang diubah hala akan diberikan kepada pembolehubah myfile. Di samping itu, cari bahagian belakang akaun awam untuk arkitek teratas untuk membalas "Status Temu Bual" untuk mendapatkan pakej hadiah kejutan.

Akhir sekali, kami membuka fail untuk menulis kandungan yang diambil.

4. Muat turun fail besar dalam ketulan

Pertimbangkan kod berikut:

使用 Python 下载的11种姿势,一种比一种高级

Pertama, kami menggunakan modul get of the requests sebagai sebelum kaedah, tetapi kali ini, kami akan menetapkan sifat aliran kepada Benar.

Seterusnya, kami mencipta fail bernama PythonBook.pdf dalam direktori kerja semasa dan membukanya untuk menulis.

Kemudian kami menentukan saiz ketulan untuk dimuat turun setiap kali. Kami telah menetapkannya kepada 1024 bait, kemudian mengulangi setiap bahagian dan menulis bahagian tersebut pada fail sehingga penghujung bahagian.

Cantik kan? Jangan risau, kami akan tunjukkan bar kemajuan proses muat turun nanti.

5. Muat turun berbilang fail (muat turun selari/berkelompok)

Untuk memuat turun berbilang fail pada masa yang sama, sila import modul berikut:

使用 Python 下载的11种姿势,一种比一种高级

Kami mengimport os dan modul masa untuk menyemak tempoh masa yang diperlukan untuk memuat turun fail. Modul ThreadPool membolehkan anda menjalankan berbilang benang atau proses menggunakan kolam.

Mari buat fungsi ringkas yang menggunting respons kepada fail:

使用 Python 下载的11种姿势,一种比一种高级

URL ini ialah tatasusunan 2D yang menentukan Laluan dan URL halaman anda untuk memuat turun.

使用 Python 下载的11种姿势,一种比一种高级

Sama seperti yang kami lakukan dalam bahagian sebelumnya, kami menghantar URL ini ke requests.get. Akhir sekali, kami membuka fail (laluan yang dinyatakan dalam URL) dan menulis kandungan halaman.

Sekarang, kita boleh memanggil fungsi ini untuk setiap URL secara individu, atau kita boleh memanggil fungsi ini untuk semua URL pada masa yang sama. Mari kita panggil fungsi ini untuk setiap URL secara individu dalam gelung for, dengan memberi perhatian kepada pemasa:

使用 Python 下载的11种姿势,一种比一种高级

Sekarang, gantikan gelung for dengan baris kod berikut:

使用 Python 下载的11种姿势,一种比一种高级

Jalankan skrip.

6 Gunakan bar kemajuan untuk memuat turun

Bar kemajuan ialah komponen UI modul clint. Masukkan arahan berikut untuk memasang modul clint:

使用 Python 下载的11种姿势,一种比一种高级

Pertimbangkan kod berikut:

使用 Python 下载的11种姿势,一种比一种高级

Dalam kod ini, kami pertama Modul permintaan diimport, dan kemudian kami mengimport komponen kemajuan daripada clint.textui. Satu-satunya perbezaan adalah dalam gelung for. Apabila menulis kandungan pada fail, kami menggunakan kaedah bar modul bar kemajuan.

7. Gunakan urllib untuk memuat turun halaman web

Dalam bahagian ini, kami akan menggunakan urllib untuk memuat turun halaman web.

Pustaka urllib ialah perpustakaan standard Python, jadi anda tidak perlu memasangnya.

Barisan kod berikut boleh memuat turun halaman web dengan mudah:

使用 Python 下载的11种姿势,一种比一种高级

Di sini nyatakan perkara yang anda ingin simpan fail dan URL tempat yang anda mahu untuk menyimpannya.

使用 Python 下载的11种姿势,一种比一种高级

Dalam kod ini, kami menggunakan kaedah urlretrieve dan lulus URL fail dan laluan untuk menyimpan fail. Sambungan fail ialah .html.

8. Memuat turun melalui proksi

Jika anda perlu menggunakan proksi untuk memuat turun fail anda, anda boleh menggunakan ProxyHandler modul urllib. Sila lihat kod berikut:

使用 Python 下载的11种姿势,一种比一种高级

Dalam kod ini, kami mencipta objek proksi dan membukanya dengan memanggil kaedah build_opener urllib dan menghantar objek proksi . Kemudian kami membuat permintaan untuk mendapatkan halaman tersebut.

Selain itu, anda juga boleh menggunakan modul permintaan seperti yang diterangkan dalam dokumentasi rasmi:

使用 Python 下载的11种姿势,一种比一种高级

Anda hanya perlu mengimport modul permintaan dan mencipta proksi anda objek. Kemudian, anda boleh mendapatkan fail tersebut.

9. Menggunakan urllib3

urllib3 ialah versi modul urllib yang dipertingkatkan. Anda boleh memuat turun dan memasangnya menggunakan pip:

使用 Python 下载的11种姿势,一种比一种高级

Kami akan menggunakan urllib3 untuk mendapatkan halaman web dan menyimpannya dalam fail teks.

Import modul berikut:

使用 Python 下载的11种姿势,一种比一种高级

Apabila memproses fail, kami menggunakan modul shutil.

Sekarang, kami memulakan pembolehubah rentetan URL seperti ini:

使用 Python 下载的11种姿势,一种比一种高级

Kemudian, kami menggunakan PoolManager urllib3, yang menjejaki pengumpulan sambungan yang diperlukan.

使用 Python 下载的11种姿势,一种比一种高级

Buat fail:

使用 Python 下载的11种姿势,一种比一种高级

Akhir sekali, kami menghantar permintaan GET untuk mendapatkan URL tersebut dan membuka fail, Jawapan kemudian ditulis pada fail:

使用 Python 下载的11种姿势,一种比一种高级

10. Muat turun fail daripada S3 menggunakan Boto3

Untuk memuat turun fail daripada Amazon S3, anda boleh menggunakan Python modul boto3 .

Sebelum anda bermula, anda perlu memasang modul awscli menggunakan pip:

使用 Python 下载的11种姿势,一种比一种高级

Untuk konfigurasi AWS, jalankan arahan berikut:

使用 Python 下载的11种姿势,一种比一种高级

Sekarang, masukkan butiran anda dengan menekan arahan berikut:

使用 Python 下载的11种姿势,一种比一种高级

Untuk memuat turun fail daripada Amazon S3, anda perlu mengimport boto3 dan botocore. Boto3 ialah Amazon SDK yang membenarkan Python mengakses perkhidmatan web Amazon (seperti S3). Botocore menyediakan perkhidmatan baris arahan untuk berinteraksi dengan perkhidmatan web Amazon.

Botocore disertakan dengan awscli. Untuk memasang boto3, jalankan arahan berikut:

使用 Python 下载的11种姿势,一种比一种高级

Sekarang, import dua modul ini:

使用 Python 下载的11种姿势,一种比一种高级

daripada Amazon Semasa memuat turun fail, kami memerlukan tiga parameter:

  • Nama baldi
  • Nama fail yang anda perlu muat turun
  • Nama fail selepas dimuat turun

Memulakan pembolehubah:

使用 Python 下载的11种姿势,一种比一种高级

Sekarang, kami memulakan pembolehubah untuk menggunakan sumber sesi. Untuk melakukan ini, kami akan memanggil kaedah resource() boto3 dan lulus dalam perkhidmatan, iaitu s3:

使用 Python 下载的11种姿势,一种比一种高级

Akhir sekali, gunakan kaedah download_file untuk memuat turun fail dan masukkan pembolehubah:

使用 Python 下载的11种姿势,一种比一种高级

11. Menggunakan asyncio

Modul asyncio digunakan terutamanya untuk mengendalikan peristiwa sistem. Ia berfungsi di sekitar gelung peristiwa yang menunggu peristiwa berlaku dan kemudian bertindak balas kepada peristiwa itu. Reaksi boleh memanggil fungsi lain. Proses ini dipanggil pemprosesan peristiwa. Modul asyncio menggunakan coroutine untuk pengendalian acara.

Untuk menggunakan pengendalian acara asyncio dan fungsi coroutine, kami akan mengimport modul asyncio:

使用 Python 下载的11种姿势,一种比一种高级

Sekarang, takrifkan kaedah coroutine asyncio seperti ini:

使用 Python 下载的11种姿势,一种比一种高级

Kata kunci async menunjukkan bahawa ini ialah coroutine asyncio asli. Di dalam coroutine, kami mempunyai kata kunci menunggu, yang mengembalikan nilai tertentu. Kami juga boleh menggunakan kata kunci pulangan.

Sekarang, mari kita buat sekeping kod untuk memuat turun fail daripada tapak web menggunakan coroutines:

使用 Python 下载的11种姿势,一种比一种高级

Dalam sekeping kod ini, kami telah mencipta async coroutine , yang akan memuat turun fail kami dan mengembalikan mesej.

Kemudian kami memanggil main_func menggunakan coroutine async yang lain, yang menunggu URL dan mengumpulkan semua URL ke dalam baris gilir. fungsi tunggu asyncio akan menunggu coroutine selesai.

Sekarang, untuk memulakan coroutine, kita perlu meletakkan coroutine ke dalam gelung peristiwa menggunakan kaedah get_event_loop() asyncio, dan akhirnya, kita laksanakan gelung peristiwa itu menggunakan kaedah run_until_complete() asyncio.

Memuat turun fail menggunakan Python adalah menyeronokkan. Semoga tutorial ini berguna kepada anda!

Atas ialah kandungan terperinci 11 postur dimuat turun menggunakan Python, setiap satu lebih maju daripada yang terakhir. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:51cto.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan