Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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

PHPz
PHPzke hadapan
2023-04-11 15:22:031540semak imbas

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

Akhir sekali, 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:

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

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

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

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.

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

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:

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

Untuk memuat turun fail pdf ini, gunakan kod berikut:

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

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.

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

4. Muat turun fail besar dalam ketulan

Pertimbangkan kod berikut:

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

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:

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

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:

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

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

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

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.

Kini, 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 untuk, memberi perhatian kepada pemasa:

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

Sekarang, gantikan gelung for dengan baris kod berikut:

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

Jalankan skrip.

6 Gunakan bar kemajuan untuk memuat turun

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

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

Pertimbangkan kod berikut:

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

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:

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

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

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

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:

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

Dalam kod ini, kami mencipta objek proksi dan membuka proksi 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:

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

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:

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

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

Import modul berikut:

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

Apabila memproses fail, kami menggunakan modul shutil.

Sekarang, kami memulakan pembolehubah rentetan URL seperti ini:

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

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

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

Buat fail:

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

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

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

10. Muat turun fail daripada S3 menggunakan Boto3

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

Sebelum bermula, anda perlu memasang modul awscli menggunakan pip:

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

Untuk konfigurasi AWS, jalankan arahan berikut:

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

Sekarang masukkan butiran anda seperti berikut:

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

Kepada muat turun fail dari 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:

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

Sekarang, import dua modul ini:

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

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:

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

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

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

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

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

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:

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

Sekarang, takrifkan kaedah coroutine asyncio seperti ini:

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

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:

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

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!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam