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.
Anda boleh menggunakan modul permintaan untuk memuat turun fail daripada URL.
Pertimbangkan kod berikut:
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.
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.
Dalam kod ini, URL dan laluan (tempat imej akan disimpan) dihantar ke kaedah muat turun modul wget.
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:
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.
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.
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:
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:
Jalankan skrip.
Bar kemajuan ialah komponen UI modul clint. Masukkan arahan berikut untuk memasang modul clint:
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.
Dalam bahagian ini, kami akan menggunakan urllib untuk memuat turun halaman web.
Pustaka urllib ialah perpustakaan standard Python, jadi anda tidak perlu memasangnya.
Di sini nyatakan perkara yang anda ingin simpan fail dan URL tempat yang anda mahu untuk menyimpannya.
Dalam kod ini, kami menggunakan kaedah urlretrieve dan lulus URL fail dan laluan untuk menyimpan fail. Sambungan fail ialah .html.
Jika anda perlu menggunakan proksi untuk memuat turun fail anda, anda boleh menggunakan ProxyHandler modul urllib. Sila lihat kod berikut:
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:
Anda hanya perlu mengimport modul permintaan dan mencipta proksi anda objek. Kemudian, anda boleh mendapatkan fail tersebut.
urllib3 ialah versi modul urllib yang dipertingkatkan. Anda boleh memuat turun dan memasangnya menggunakan pip:
Kami akan menggunakan urllib3 untuk mendapatkan halaman web dan menyimpannya dalam fail teks.
Apabila memproses fail, kami menggunakan modul shutil.
Kemudian, kami menggunakan PoolManager urllib3, yang menjejaki pengumpulan sambungan yang diperlukan.
Akhir sekali, kami menghantar permintaan GET untuk mendapatkan URL tersebut dan membuka fail, Jawapan kemudian ditulis pada fail:
Untuk memuat turun fail daripada Amazon S3, anda boleh menggunakan Python modul boto3 .
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:
Sekarang, kami memulakan pembolehubah untuk menggunakan sumber sesi. Untuk melakukan ini, kami akan memanggil kaedah resource() boto3 dan lulus dalam perkhidmatan, iaitu s3:
Akhir sekali, gunakan kaedah download_file untuk memuat turun fail dan masukkan pembolehubah:
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:
Sekarang, takrifkan kaedah coroutine asyncio seperti ini:
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:
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!