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.
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:
Untuk memuat turun fail pdf ini, gunakan kod berikut:
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.
Pertimbangkan kod berikut:
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.
Untuk memuat turun berbilang fail pada masa yang sama, sila import modul berikut:
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:
URL ini ialah tatasusunan 2D yang menentukan Laluan dan URL halaman anda untuk memuat turun.
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:
Sekarang, gantikan gelung for dengan baris kod berikut:
Jalankan skrip.
Bar kemajuan ialah komponen UI modul clint. Masukkan arahan berikut untuk memasang modul clint:
Pertimbangkan kod berikut:
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.
Barisan kod berikut boleh memuat turun halaman web dengan mudah:
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 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:
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.
Import modul berikut:
Apabila memproses fail, kami menggunakan modul shutil.
Sekarang, kami memulakan pembolehubah rentetan URL seperti ini:
Kemudian, kami menggunakan PoolManager urllib3, yang menjejaki pengumpulan sambungan yang diperlukan.
Buat fail:
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 .
Sebelum anda bermula, anda perlu memasang modul awscli menggunakan pip:
Untuk konfigurasi AWS, jalankan arahan berikut:
Sekarang, masukkan butiran anda dengan menekan arahan berikut:
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:
Sekarang, import dua modul ini:
daripada Amazon Semasa memuat turun fail, kami memerlukan tiga parameter:
Memulakan pembolehubah:
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!