Permintaan python memposting banyak tajuk

Dalam artikel tutorial Permintaan ini, Anda akan mempelajari semua dasar-dasar modul permintaan menggunakan Python untuk memulai dengan menggunakan Permintaan. Kami akan membahas topik-topik berikut di blog ini

  • Apa itu modul Permintaan?
  • Menginstal modul Permintaan
  • Membuat Permintaan GET
  • Mengunduh Gambar dengan Permintaan
  • Membuat Permintaan POST
  • Mengirim Cookie dan Header
  • Objek Sesi
  • Kesimpulan

Mari kita mulai blog "Tutorial Permintaan" ini dengan terlebih dahulu memeriksa apa sebenarnya Modul Permintaan itu

Apa itu Modul Permintaan?

Permintaan adalah modul Python yang dapat Anda gunakan untuk mengirim semua jenis permintaan HTTP. Ini adalah perpustakaan yang mudah digunakan dengan banyak fitur mulai dari meneruskan parameter di URL hingga mengirim tajuk khusus dan Verifikasi SSL. Dalam tutorial ini, Anda akan belajar cara menggunakan pustaka ini untuk mengirim permintaan HTTP sederhana dengan Python

Permintaan memungkinkan Anda mengirim HTTP/1. 1 permintaan. Anda dapat menambahkan header, data formulir, file multi-bagian, dan parameter dengan kamus Python sederhana, dan mengakses data respons dengan cara yang sama

Menginstal modul Permintaan

Untuk menginstal permintaan, cukup

$ pip install requests

Atau, jika Anda benar-benar harus

$ easy_install requests
_Membuat Permintaan GET

Cukup mudah untuk mengirim permintaan HTTP menggunakan Permintaan. Anda mulai dengan mengimpor modul dan kemudian membuat permintaan. Lihat contohnya

import requests 
req = requests.get('https://www.edureka.co/')

Jadi, semua informasi disimpan di suatu tempat, bukan?

Ya, itu disimpan dalam objek Respon yang disebut sebagai req

Katakanlah, misalnya, Anda menginginkan penyandian halaman web sehingga Anda dapat memverifikasinya atau menggunakannya di tempat lain. Ini dapat dilakukan dengan menggunakan req. properti pengkodean

Nilai tambah tambahan adalah Anda juga dapat mengekstraksi banyak fitur seperti kode status misalnya (dari permintaan). Ini dapat dilakukan dengan menggunakan req. properti status_code

req.encoding # returns 'utf-8' 
req.status_code # returns 200

Kami juga dapat mengakses cookie yang dikirimkan kembali oleh server. Ini dilakukan dengan menggunakan req. cookie, sesederhana itu. Demikian pula, Anda juga bisa mendapatkan tajuk respons. Ini dilakukan dengan memanfaatkan req. header

Perhatikan bahwa req. properti headers akan mengembalikan kamus case-insensitive dari header respons. Jadi, apa artinya ini?

Ini berarti bahwa req. header['Panjang Konten'], req. header['panjang-konten'] dan req. headers['CONTENT-LENGTH'] semuanya akan mengembalikan nilai dari header respons 'Panjang Konten' saja

Kami juga dapat memeriksa apakah respons yang diperoleh adalah redirect HTTP yang baik (atau tidak) yang dapat diproses secara otomatis menggunakan req. properti is_redirect. Ini akan mengembalikan Benar atau Salah berdasarkan respons yang diperoleh

Anda juga bisa mendapatkan waktu yang berlalu antara mengirim permintaan dan mendapatkan kembali respons menggunakan properti lain. Coba tebak? . properti yang telah berlalu

Ingat URL yang awalnya Anda berikan ke fungsi get()?

Dan untuk melihat URL respons yang sebenarnya, Anda dapat menggunakan req. properti url

import requests
req = requests.get('http://www.edureka.co/')

req.encoding # returns 'utf-8'
req.status_code # returns 200
req.elapsed # returns datetime.timedelta(0, 1, 666890)
req.url # returns 'https://edureka.co/'

req.history
# returns [<Response [301]>, <Response [301]>]

req.headers['Content-Type']
# returns 'text/html; charset=utf-8'
_

Tidakkah menurut Anda mendapatkan semua informasi tentang halaman web ini bagus?

Jika konten yang Anda akses adalah teks, Anda selalu dapat menggunakan req. properti teks untuk mengaksesnya. Perhatikan bahwa konten kemudian diuraikan sebagai Unicode saja. Anda dapat melewatkan penyandian ini untuk mendekode teks ini menggunakan req. encoding properti seperti yang telah kita bahas sebelumnya

Dalam hal tanggapan non-teks, Anda dapat mengaksesnya dengan sangat mudah. Sebenarnya itu dilakukan dalam format biner saat Anda menggunakan req. isi. Modul ini akan secara otomatis mendekode gzip dan mengempiskan pengkodean transfer untuk kita. Ini bisa sangat membantu ketika Anda berhadapan langsung dengan file media. Selain itu, Anda juga dapat mengakses konten respons yang disandikan JSON, jika ada, menggunakan req. json() fungsi

Cukup sederhana dan banyak fleksibilitas, bukan?

Selain itu, jika diperlukan, Anda juga bisa mendapatkan respons mentah dari server hanya dengan menggunakan req. mentah. Perlu diingat bahwa Anda harus meneruskan stream=True dalam permintaan untuk mendapatkan respons mentah sesuai kebutuhan

Namun, beberapa file yang Anda unduh dari internet menggunakan modul Permintaan mungkin memiliki ukuran yang sangat besar, bukan? . Namun, Anda disarankan mengunduh file dalam potongan atau bongkahan menggunakan metode iter_content(chunk_size = 1, decode_unicode = False)

Jadi, metode ini mengulang data respons dalam jumlah byte chunk_size sekaligus. Dan ketika stream=True telah disetel berdasarkan permintaan, metode ini akan menghindari membaca seluruh file ke dalam memori sekaligus hanya untuk respons yang besar

Perhatikan bahwa parameter chunk_size dapat berupa bilangan bulat atau Tidak ada. Tapi, ketika diatur ke nilai integer, chunk_size menentukan jumlah byte yang harus dibaca ke dalam memori sekaligus

Ketika chunk_size diatur ke Tidak Ada dan aliran diatur ke True, data akan dibaca saat tiba dalam ukuran potongan apa pun yang diterima saat dan kapan. Tapi, ketika chunk_size diatur ke Tidak ada dan aliran diatur ke False, semua data akan dikembalikan sebagai satu potongan data saja

Mengunduh Gambar Menggunakan Modul Permintaan

Jadi mari unduh gambar hutan berikut di Pixabay menggunakan modul Permintaan yang telah kita pelajari. Berikut adalah gambar yang sebenarnya

Ini adalah kode yang Anda perlukan untuk mengunduh gambar

import requests
req = requests.get('path/to/forest.jpg', stream=True)
req.raise_for_status()
with open('Forest.jpg', 'wb') as fd:
for chunk in req.iter_content(chunk_size=50000):
print('Received a Chunk')
fd.write(chunk)

Perhatikan bahwa 'path/to/forest. jpg’ adalah URL gambar sebenarnya. Anda dapat meletakkan URL dari gambar lain di sini untuk mengunduh sesuatu yang lain juga. Ini hanyalah sebuah contoh yang ditunjukkan di sini dan file gambar yang diberikan berukuran sekitar 185kb dan Anda telah menetapkan chunk_size ke 50.000 byte

Ini berarti pesan “Received a Chunk” harus dicetak empat kali di terminal. Ukuran potongan terakhir hanya akan menjadi 39350 byte karena bagian dari file yang tersisa untuk diterima setelah tiga iterasi pertama adalah 39350 byte

Permintaan juga memungkinkan Anda meneruskan parameter dalam URL. Ini sangat membantu ketika Anda mencari halaman web untuk beberapa hasil seperti tutorial atau gambar tertentu. Anda dapat memberikan string kueri ini sebagai kamus string menggunakan kata kunci params dalam permintaan GET. Lihat contoh mudah ini

import requests

query = {'q': 'Forest', 'order': 'popular', 'min_width': '800', 'min_height': '600'}
req = requests.get('https://pixabay.com/en/photos/', params=query)

req.url
# returns 'https://pixabay.com/en/photos/?order=popular&min_height=600&q=Forest&min_width=800'
_

Selanjutnya di blog "Tutorial Permintaan" ini, mari kita lihat bagaimana kita dapat membuat permintaan POST

Membuat Permintaan POST

Membuat permintaan POST semudah membuat permintaan GET. Anda cukup menggunakan fungsi post() alih-alih get()

Ini dapat berguna saat Anda mengirimkan formulir secara otomatis. Misalnya, kode berikut akan mengunduh seluruh halaman Wikipedia tentang Nanoteknologi dan menyimpannya di PC Anda

import requests
req = requests.post('https://en.wikipedia.org/w/index.php', data = {'search':'Nanotechnology'})
req.raise_for_status()
with open('Nanotechnology.html', 'wb') as fd:
for chunk in req.iter_content(chunk_size=50000):
fd.write(chunk)
Mengirim Cookie dan Header

Seperti disebutkan sebelumnya, Anda dapat mengakses cookie dan header yang dikirim kembali oleh server kepada Anda menggunakan req. cookie dan req. header. Permintaan juga memungkinkan Anda mengirim cookie dan header khusus Anda sendiri dengan permintaan. Ini dapat membantu saat Anda ingin, katakanlah, menyetel agen pengguna khusus untuk permintaan Anda

Untuk menambahkan tajuk HTTP ke permintaan, Anda cukup meneruskannya di dict ke parameter tajuk. Demikian pula, Anda juga dapat mengirim cookie Anda sendiri ke server menggunakan dict yang diteruskan ke parameter cookie

import requests

url = 'http://some-domain.com/set/cookies/headers'

headers = {'user-agent': 'your-own-user-agent/0.0.1'}
cookies = {'visit-month': 'February'}

req = requests.get(url, headers=headers, cookies=cookies)
_

Cookie juga bisa dimasukkan ke dalam Cookie Jar. Mereka menyediakan antarmuka yang lebih lengkap untuk memungkinkan Anda menggunakan cookie tersebut melalui beberapa jalur

Lihat contoh di bawah ini

import requests

jar = requests.cookies.RequestsCookieJar()
jar.set('first_cookie', 'first', domain='httpbin.org', path='/cookies')
jar.set('second_cookie', 'second', domain='httpbin.org', path='/extra')
jar.set('third_cookie', 'third', domain='httpbin.org', path='/cookies')

url = 'http://httpbin.org/cookies'
req = requests.get(url, cookies=jar)

req.text

# returns '{ "cookies": { "first_cookie": "first", "third_cookie": "third" }}'
_

Selanjutnya di blog "Tutorial Permintaan" ini, mari kita lihat objek sesi

Objek Sesi

Terkadang berguna untuk mempertahankan parameter tertentu di beberapa permintaan. Objek Sesi melakukan hal itu. Misalnya, ini akan mempertahankan data cookie di semua permintaan yang dibuat menggunakan sesi yang sama

Objek Sesi menggunakan penggabungan koneksi urllib3. Ini berarti koneksi TCP yang mendasarinya akan digunakan kembali untuk semua permintaan yang dibuat ke host yang sama

Ini secara signifikan dapat meningkatkan kinerja. Anda juga dapat menggunakan metode objek Permintaan dengan objek Sesi

Sesi juga berguna saat Anda ingin mengirim data yang sama ke semua permintaan. Misalnya, jika Anda memutuskan untuk mengirim cookie atau header agen pengguna dengan semua permintaan ke domain tertentu, Anda dapat menggunakan objek Sesi

Ini sebuah contoh

$ easy_install requests
_0

Seperti yang Anda lihat, cookie sesi "bulan kunjungan" dikirim dengan ketiga permintaan tersebut. Namun, cookie "tahun kunjungan" hanya dikirim selama permintaan kedua. Tidak disebutkan cookie "tahun kunjungan" dalam permintaan ketiga juga. Ini menegaskan fakta bahwa cookie atau kumpulan data lain pada permintaan individu tidak akan dikirim dengan permintaan sesi lainnya

Kesimpulan

Konsep yang dibahas dalam tutorial ini akan membantu Anda membuat permintaan dasar ke server dengan mengirimkan header, cookie, atau string kueri tertentu

Ini akan sangat berguna ketika Anda mencoba mengikis beberapa halaman web untuk mendapatkan informasi. Sekarang, Anda juga dapat mengunduh file musik dan wallpaper secara otomatis dari berbagai situs web setelah Anda mengetahui pola di URL

Saya harap Anda menikmati posting ini di Tutorial Permintaan. Jika Anda ingin melihat lebih banyak artikel tentang teknologi paling tren di pasar seperti Artificial Intelligence, DevOps, Ethical Hacking, Anda dapat merujuk ke situs resmi Edureka

Carilah artikel lain dalam seri ini yang akan menjelaskan berbagai aspek lain dari Python dan Ilmu Data

Bisakah permintaan memiliki banyak tajuk?

Permintaan akan memiliki jumlah header yang bervariasi dan perlu dikontrol serta dikirim tanpa rangkaian. RequestBuilder tidak mendukung penambahan beberapa header tanpa rangkaian .

Bagaimana Anda mengirimkan header dalam permintaan POST dengan Python?

Untuk meneruskan header HTTP ke permintaan POST menggunakan pustaka permintaan Python, Anda dapat menggunakan parameter headers= di. fungsi post() . Parameter headers= menerima kamus Python dari pasangan kunci-nilai, di mana kunci mewakili jenis tajuk dan nilainya adalah nilai tajuk.

Bagaimana Anda mengirim banyak permintaan dengan Python?

Ada dua cara dasar untuk menghasilkan permintaan HTTP bersamaan. melalui beberapa utas atau melalui pemrograman asinkron . Dalam pendekatan multi-utas, setiap permintaan ditangani oleh utas tertentu. Dalam pemrograman asinkron, ada (biasanya) satu utas dan loop peristiwa, yang secara berkala memeriksa penyelesaian suatu tugas.

Bagaimana cara menambahkan Konten

Untuk mengirim permintaan Klien dengan tajuk Jenis-Konten, Anda perlu menyediakan tajuk Jenis-Konten di "Nama. value" format , sama seperti yang Anda lakukan untuk header HTTP standar apa pun. Header HTTP Content-Type digunakan untuk menunjukkan jenis media dalam isi pesan.