Permintaan - Panduan Cepat

Permintaan adalah pustaka HTTP yang menyediakan fungsionalitas mudah untuk menangani permintaan / tanggapan http di aplikasi web Anda. Perpustakaan dikembangkan dengan python.

Situs web resmi Permintaan Python yang tersedia di https://2.python-requests.org/en/master/ mendefinisikan Permintaan sebagai berikut -

Requests adalah pustaka HTTP yang elegan dan sederhana untuk Python, dibuat untuk manusia.

Fitur Permintaan

Fitur Permintaan dibahas di bawah -

Permintaan

Pustaka permintaan python memiliki metode yang mudah digunakan yang tersedia untuk menangani permintaan Http. Meneruskan parameter dan menangani jenis permintaan seperti GET, POST, PUT, DELETE, dll. Sangatlah mudah.

Tanggapan

Anda bisa mendapatkan respons dalam format yang Anda butuhkan dan yang didukung adalah format teks, respons biner, respons json, dan respons mentah.

Header

Perpustakaan memungkinkan Anda untuk membaca, memperbarui, atau mengirim header baru sesuai kebutuhan Anda.

Batas waktu

Batas waktu dapat dengan mudah ditambahkan ke URL yang Anda minta menggunakan pustaka permintaan python. Kebetulan Anda menggunakan URL pihak ketiga dan menunggu tanggapan.

Itu selalu merupakan praktik yang baik untuk memberikan waktu tunggu pada URL karena kami mungkin ingin URL merespons dalam waktu tunggu itu dengan tanggapan atau kesalahan yang datang karena waktu tunggu. Tidak melakukannya dapat menyebabkan salah satu dari mereka menunggu permintaan itu tanpa batas.

Penanganan kesalahan

Modul permintaan memberikan dukungan untuk penanganan kesalahan dan beberapa di antaranya adalah Kesalahan Koneksi, kesalahan Timeout, Kesalahan TooManyRedirects, kesalahan Response.raise_for_status, dll.

Kue

Perpustakaan memungkinkan Anda untuk membaca, menulis dan memperbarui untuk URL yang diminta.

Sesi

Untuk menjaga data, Anda membutuhkan antara permintaan yang Anda butuhkan sesi. Jadi, jika host yang sama dipanggil berulang kali, Anda dapat menggunakan kembali koneksi TCP yang pada gilirannya akan meningkatkan kinerja.

Sertifikat SSL

Sertifikat SSL adalah fitur keamanan yang dilengkapi dengan url aman. Saat Anda menggunakan Permintaan, itu juga memverifikasi sertifikat SSL untuk URL https yang diberikan. Verifikasi SSL diaktifkan secara default di pustaka permintaan dan akan memunculkan kesalahan jika sertifikat tidak ada.

Autentikasi

Otentikasi HTTP ada di sisi server meminta beberapa informasi otentikasi seperti nama pengguna, kata sandi ketika klien meminta URL. Ini adalah keamanan tambahan untuk permintaan dan respons yang dipertukarkan antara klien dan server.

Keuntungan menggunakan Python Requests Library

Berikut adalah keuntungan menggunakan Python Requests Library -

  • Mudah digunakan dan mengambil data dari URL yang diberikan.

  • Pustaka permintaan dapat digunakan untuk mengikis data dari situs web.

  • Dengan menggunakan permintaan, Anda bisa mendapatkan, memposting, menghapus, memperbarui data untuk URL yang diberikan.

  • Penanganan cookie dan sesi sangat mudah.

  • Keamanan juga dijaga dengan bantuan dukungan modul otentikasi.

Di bab ini, kami akan mengerjakan penginstalan Permintaan. Untuk mulai bekerja dengan modul Requests, kita perlu menginstal Python terlebih dahulu. Jadi kita akan mengerjakan berikut-

  • Instal Python
  • Instal Permintaan

Menginstal Python

Buka situs resmi Python: https://www.python.org/downloads/seperti yang ditunjukkan di bawah ini dan klik versi terbaru yang tersedia untuk Windows, Linux / Unix, dan Mac OS. Unduh Python sesuai OS 64 atau 32 bit yang tersedia untuk Anda.

Setelah Anda mengunduh, klik file .exe dan ikuti langkah-langkah untuk menginstal python di sistem Anda.

Manajer paket python, yaitu pip juga akan diinstal secara default dengan instalasi di atas. Untuk membuatnya berfungsi secara global di sistem Anda, tambahkan langsung lokasi python ke variabel PATH. Hal yang sama ditunjukkan pada awal instalasi, ingatlah untuk mencentang kotak yang bertuliskan TAMBAHKAN ke PATH. Jika Anda lupa untuk memeriksanya, ikuti langkah-langkah yang diberikan di bawah ini untuk ditambahkan ke PATH.

Untuk menambah PATH ikuti langkah-

Klik kanan pada ikon Komputer Anda dan klik pada properti> Pengaturan Sistem Lanjutan.

Ini akan menampilkan layar seperti yang ditunjukkan di bawah ini -

Klik Variabel Lingkungan seperti yang ditunjukkan di atas. Ini akan menampilkan layar seperti yang ditunjukkan di bawah ini -

Pilih Path dan klik tombol Edit, tambahkan jalur lokasi python Anda di bagian akhir. Sekarang, mari kita periksa versi python.

Memeriksa versi python

E:\prequests>python --version
Python 3.7.3

Instal Permintaan

Sekarang setelah kita menginstal python, kita akan menginstal Permintaan.

Setelah python diinstal, pengelola paket python yaitu pip juga akan diinstal. Berikut adalah perintah untuk memeriksa versi pip.

E:\prequests>pip --version
pip 19.1.1 from c:\users\xxxxx\appdata\local\programs\python\python37\lib\site-p
ackages\pip (python 3.7)

Kami telah memasang pip dan versinya adalah 19.1.1. Sekarang, akan menggunakan pip untuk menginstal modul Requests.

Perintah diberikan di bawah-

pip install requests
E:\prequests>pip install requests
Requirement already satisfied: requests in c:\users\xxxx\appdata\local\programs
\python\python37\lib\site-packages (2.22.0)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\kamat\appdata\loca
l\programs\python\python37\lib\site-packages (from requests) (2019.3.9)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in c:\use
rs\xxxxx\appdata\local\programs\python\python37\lib\site-packages (from requests
) (1.25.3)
Requirement already satisfied: idna<2.9,>=2.5 in c:\users\xxxxxxx\appdata\local\pr
ograms\python\python37\lib\site-packages (from requests) (2.8)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in c:\users\xxxxx\appdata\l
ocal\programs\python\python37\lib\site-packages (from requests) (3.0.4)

Kami sudah menginstal modul, jadi di prompt perintah tertulis Persyaratan sudah puas; jika tidak diinstal itu akan mengunduh paket yang diperlukan untuk instalasi.

Untuk memeriksa detail dari modul permintaan yang diinstal, Anda dapat menggunakan perintah berikut−

pip show requests
E:\prequests>pip show requests
Name: requests
Version: 2.22.0
Summary: Python HTTP for Humans.
Home-page: http://python-requests.org
Author: Kenneth Reitz
Author-email: [email protected]
License: Apache 2.0
Location: c:\users\xxxxx\appdata\local\programs\python\python37\lib\site-package
S
Requires: certifi, idna, urllib3, chardet
Required-by:

Versi modul Permintaan adalah 2.22.0.

Permintaan Python adalah pustaka HTTP yang akan membantu kita bertukar data antara klien dan server. Anggap Anda memiliki UI dengan formulir, di mana Anda perlu memasukkan detail pengguna, jadi setelah Anda memasukkannya, Anda harus mengirimkan data yang tidak lain adalah permintaan Http POST atau PUT dari klien ke server untuk menyimpan data.

Saat Anda menginginkan datanya, Anda perlu mengambilnya dari server, yang lagi-lagi merupakan permintaan Http GET. Pertukaran data antara klien ketika meminta data dan server merespons dengan data yang diperlukan, hubungan antara klien dan server ini sangat penting.

Permintaan dibuat ke URL yang diberikan dan itu bisa menjadi URL yang aman atau tidak aman.

Permintaan ke URL dapat dilakukan menggunakan GET, POST, PUT, DELETE. Yang paling umum digunakan adalah metode GET, terutama digunakan saat Anda ingin mengambil data dari server.

Anda juga dapat mengirim data ke URL sebagai string kueri misalnya-

https://jsonplaceholder.typicode.com/users?id=9&username=Delphine

Jadi di sini, kami mengirimkan id = 9 dan username = Delphine ke URL. Semua nilai dikirim dalam pasangan kunci / nilai setelah tanda tanya (?) Dan beberapa parameter diteruskan ke URL yang dipisahkan oleh &.

Menggunakan pustaka permintaan, URL dipanggil sebagai berikut menggunakan kamus string.

Dimana data ke URL dikirim sebagai kamus string. Jika Anda ingin meneruskan id = 9 dan username = Delphine, Anda dapat melakukan hal berikut-

payload = {'id': '9', 'username': 'Delphine'}

Pustaka permintaan disebut sebagai berikut−

res = requests.get('https://jsonplaceholder.typicode.com/users', params=payload')

Menggunakan POST, kita dapat melakukan sebagai berikut-

res = requests.post('https://jsonplaceholder.typicode.com/users', data = {'id':'9', 'username':'Delphine'})

Menggunakan PUT

res = requests.put('https://jsonplaceholder.typicode.com/users', data = {'id':'9', 'username':'Delphine'})

Menggunakan DELETE

res = requests.delete('https://jsonplaceholder.typicode.com/users')

Respon dari permintaan Http bisa dalam bentuk teks yang dikodekan, dikodekan biner, format json atau respon mentah. Rincian permintaan dan tanggapan dijelaskan secara rinci di bab-bab selanjutnya.

Pada bab ini, kita akan memahami bagaimana bekerja dengan modul request. Kami akan melihat ke berikut-

  • Membuat Permintaan HTTP.
  • Meneruskan Parameter ke Permintaan HTTP.

Membuat Permintaan HTTP

Untuk membuat permintaan Http, kita perlu mengimpor modul permintaan seperti yang ditunjukkan di bawah ini-

import requests

Sekarang mari kita lihat, bagaimana membuat panggilan ke URL menggunakan modul request.

Mari kita gunakan URL− https://jsonplaceholder.typicode.com/users dalam kode, untuk menguji Modul Permintaan.

Contoh

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.status_code)

Url− https://jsonplaceholder.typicode.com/usersdipanggil menggunakan metode requests.get (). Objek respons dari URL disimpan dalam variabel getdata. Saat kita mencetak variabel, ini memberikan 200 kode respon, yang berarti kita telah berhasil mendapatkan respon.

Keluaran

E:\prequests>python makeRequest.py
<Response [200]>

Untuk mendapatkan konten dari respon tersebut, kita dapat melakukannya dengan menggunakan getdata.content seperti yang ditunjukkan di bawah-

Contoh

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.content)

getdata.content, akan mencetak semua data yang tersedia di respons.

Keluaran

E:\prequests>python makeRequest.py
b'[\n {\n  "id": 1,\n  "name": "Leanne Graham",\n  "username": "Bret",\n
"email": "[email protected]",\n  "address": {\n  "street": "Kulas Light
",\n  "suite": "Apt. 556",\n  "city": "Gwenborough",\n  "zipcode": "
92998-3874",\n  "geo": {\n "lat": "-37.3159",\n  "lng": "81.149
6"\n }\n },\n  "phone": "1-770-736-8031 x56442",\n  "website": "hild
egard.org",\n  "company": {\n "name": "Romaguera-Crona",\n  "catchPhr
ase": "Multi-layered client-server neural-net",\n  "bs": "harness real-time
e-markets"\n }\n }

Meneruskan Parameter ke Permintaan HTTP

Hanya meminta URL saja tidak cukup, kita juga perlu meneruskan parameter ke URL.

Parameter sebagian besar diteruskan sebagai pasangan kunci / nilai, misalnya-

 https://jsonplaceholder.typicode.com/users?id=9&username=Delphine

Jadi, kami memiliki id = 9 dan username = Delphine. Sekarang, akan melihat bagaimana melewatkan data tersebut ke request modul Http.

Contoh

import requests
payload = {'id': 9, 'username': 'Delphine'}
getdata = requests.get('https://jsonplaceholder.typicode.com/users', params=payload)
print(getdata.content)

Detailnya disimpan dalam payload objek dalam pasangan kunci / nilai dan diteruskan ke params, di dalam metode get ().

Keluaran

E:\prequests>python makeRequest.py
b'[\n {\n "id": 9,\n "name": "Glenna Reichert",\n "username": "Delphin
e",\n "email": "[email protected]",\n "address": {\n "street":
"Dayna Park",\n "suite": "Suite 449",\n "city": "Bartholomebury",\n
"zipcode": "76495-3109",\n "geo": {\n "lat": "24.6463",\n
"lng": "-168.8889"\n }\n },\n "phone": "(775)976-6794 x41206",\n "
website": "conrad.com",\n "company": {\n "name": "Yost and Sons",\n
"catchPhrase": "Switchable contextually-based project",\n "bs": "aggregate
real-time technologies"\n }\n }\n]'

Kami sekarang mendapatkan detail detail id = 9 dan username = Delphine dalam responsnya.

Jika Anda ingin melihat, bagaimana URL terlihat setelah melewati parameter, gunakan objek respon ke URL.

Contoh

import requests
payload = {'id': 9, 'username': 'Delphine'}
getdata = requests.get('https://jsonplaceholder.typicode.com/users', params=payload)
print(getdata.url)

Keluaran

E:\prequests>python makeRequest.py
https://jsonplaceholder.typicode.com/users?id=9&username=Delphine

Dalam bab ini, kita akan membahas lebih detail tentang respons yang diterima dari modul permintaan. Kami akan membahas detail berikut-

  • Mendapatkan Respon
  • Tanggapan JSON
  • Respon RAW
  • Respon Biner

Mendapatkan Respon

Kami akan membuat permintaan ke URL menggunakan metode request.get ().

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users');

Getdata memiliki objek respons. Ia memiliki semua detail tanggapan. Kita bisa mendapatkan respon dengan 2 cara menggunakan (. Text ) dan (. Content ). Menggunakan response.text akan memberi Anda data kembali dalam format teks seperti yang ditunjukkan di bawah-

Contoh

E:\prequests>python makeRequest.py
[
 {
   "id": 1,
   "name": "Leanne Graham",
   "username": "Bret",
   "email": "[email protected]",
   "address": {
   "street": "Kulas Light",
   "suite": "Apt. 556",
   "city": "Gwenborough",
   "zipcode": "92998-3874",
   "geo": {
   "lat": "-37.3159",
   "lng": "81.1496"
   }
  },
   "phone": "1-770-736-8031 x56442",
   "website": "hildegard.org",
   "company": {
   "name": "Romaguera-Crona",
   "catchPhrase": "Multi-layered client-server neural-net",
   "bs": "harness real-time e-markets"
  }
},

Anda akan melihat responsnya sama, seperti yang akan muncul di browser ketika Anda melihat sumber untuk URL seperti yang ditunjukkan di bawah−

Anda juga dapat mencoba URL .html dan melihat konten menggunakan response.text, ini akan sama dengan tampilan konten sumber untuk URL .html di browser.

Sekarang, mari kita coba response.content untuk URL yang sama dan lihat hasilnya.

Contoh

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.content)

Keluaran

E:\prequests>python makeRequest.py
b'[\n {\n "id": 1,\n "name": "Leanne Graham",\n "username": "Bret",\n
"email": "[email protected]",\n "address": {\n "street": "Kulas Light
",\n "suite": "Apt. 556",\n "city": "Gwenborough",\n "zipcode": "
92998-3874",\n "geo": {\n "lat": "-37.3159",\n "lng": "81.149
6"\n }\n },\n "phone": "1-770-736-8031 x56442",\n "website": "hild
egard.org",\n "company": {\n "name": "Romaguera-Crona",\n "catchPhr
ase": "Multi-layered client-server neural-net",\n "bs": "harness real-time
e-markets"\n }\n },\n {\n "id": 2,\n "name": "Ervin Howell",\n "us
ername": "Antonette",\n "email": "[email protected]",\n "address": {\n
"street": "Victor Plains",\n "suite": "Suite 879",\n "city": "Wisoky
burgh",\n "zipcode": "90566-7771",\n "geo": {\n "lat": "-43.950
9",\n "lng": "-34.4618"\n }\n },\n "phone": "010-692-6593 x091
25",\n "website": "anastasia.net",\n "company": {\n "name": "Deckow-C
rist",\n "catchPhrase": "Proactive didactic contingency",\n "bs": "syn
ergize scalable supply-chains"\n }\n },\n {\n "id": 3,\n "name": "Cle
mentine Bauch",\n "username": "Samantha",\n "email":
"[email protected]",
\n "address": {\n "street": "Douglas Extension",\n "suite": "Suite
847",\n "city": "McKenziehaven",\n "zipcode": "59590-4157",\n "ge
o": {\n "lat": "-68.6102",\n "lng": "-47.0653"\n }\n },\n

Responsnya diberikan dalam byte. Anda akan mendapatkan suratbdi awal tanggapan. Dengan modul permintaan, Anda bisa mendapatkan pengkodean yang digunakan dan juga mengubah pengkodean jika diperlukan. Misalnya, untuk mendapatkan encoding Anda bisa menggunakan response.encoding.

print(getdata.encoding)

Keluaran

utf-8

Anda dapat mengubah pengkodean sebagai berikut- Anda dapat menggunakan pengkodean pilihan Anda.

getdata.encoding = 'ISO-8859-1'

Tanggapan JSON

Anda juga bisa mendapatkan respon untuk permintaan Http dalam format json dengan menggunakan metode response.json () sebagai berikut−

Contoh

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.json())

Keluaran

E:\prequests>python makeRequest.py
[{'id': 1, 'name': 'Leanne Graham', 'username': 'Bret', 'email': 'Sincere@april.
biz', 'address': {'street': 'Kulas Light', 'suite': 'Apt. 556', 'city': 'Gwenbor
ough', 'zipcode': '92998-3874', 'geo': {'lat': '-37.3159', 'lng': '81.1496'}},
'
phone': '1-770-736-8031 x56442', 'website': 'hildegard.org', 'company': {'name':
'Romaguera-Crona', 'catchPhrase': 'Multi-layered client-server neural-net', 'bs
': 'harness real-time e-markets'}}]

Respon RAW

Jika Anda memerlukan respons mentah untuk URL Http, Anda dapat menggunakan response.raw, juga tambahkan stream=True di dalam metode get seperti yang ditunjukkan di bawah−

Contoh

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users', stream=True)
print(getdata.raw)

Keluaran

E:\prequests>python makeRequest.py
<urllib3.response.HTTPResponse object at 0x000000A8833D7B70>

Untuk membaca lebih banyak konten dari data mentah Anda dapat melakukannya sebagai berikut-

print(getdata.raw.read(50))

Keluaran

E:\prequests>python makeRequest.py
b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\x95\x98[o\xe38\x12\x85\xdf\xe7W\x10y\
xda\x01F\x82.\xd4m\x9f\xdc\x9dd\xba\xb7\x93\xf4\x06q\xef4\x06\x83A@K\x15\x89m'

Respon Biner

Untuk mendapatkan respon biner kita bisa menggunakan response.content.

Contoh

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.content)

Keluaran

E:\prequests>python makeRequest.py
b'[\n {\n "id": 1,\n "name": "Leanne Graham",\n "username": "Bret",\n
"email": "[email protected]",\n "address": {\n "street": "Kulas Light
",\n "suite": "Apt. 556",\n "city": "Gwenborough",\n "zipcode": "
92998-3874",\n "geo": {\n "lat": "-37.3159",\n "lng": "81.149
6"\n }\n },\n "phone": "1-770-736-8031 x56442",\n "website": "hild
egard.org",\n "company": {\n "name": "Romaguera-Crona",\n "catchPhr
ase": "Multi-layered client-server neural-net",\n "bs": "harness real-time
e-markets"\n }\n },\n {\n "id": 2,\n "name": "Ervin Howell",\n "us
ername": "Antonette",\n "email": "[email protected]",\n "address": {\n
"street": "Victor Plains",\n "suite": "Suite 879",\n "city": "Wisoky
burgh",\n "zipcode": "90566-7771",\n "geo": {\n "lat": "-43.950
9",\n "lng": "-34.4618"\n }\n },\n "phone": "010-692-6593 x091
25",\n "website": "anastasia.net",\n "company": {\n "name": "Deckow-C
rist",\n "catchPhrase": "Proactive didactic contingency",\n "bs": "syn
ergize scalable supply-chains"\n }\n },\n {\n "id": 3,\n "name": "Cle
mentine Bauch",\n "username": "Samantha",\n "email": "[email protected]",
\n "address": {\n "street": "Douglas Extension",\n "suite": "Suite
847",\n "city": "McKenziehaven",\n "zipcode": "59590-4157",\n "ge
o": {\n "lat": "-68.6102",\n "lng": "-47.0653"\n }\n },\n

Responsnya diberikan dalam byte. Anda akan mendapatkan suratbdi awal tanggapan. Respons biner sebagian besar digunakan untuk permintaan non-teks.

Permintaan - Header Permintaan HTTP

Pada bab sebelumnya, kita telah melihat bagaimana membuat request dan mendapatkan responnya. Bab ini akan membahas lebih banyak tentang bagian tajuk URL. Jadi, kita akan melihat yang berikut-

  • Memahami Header Permintaan
  • Header Kustom
  • Header Respons

Memahami Header Permintaan

Tekan sembarang URL di browser, periksa dan periksa di tab jaringan alat pengembang.

Anda akan mendapatkan header respons, header permintaan, payload, dll.

Misalnya, pertimbangkan URL berikut−

https://jsonplaceholder.typicode.com/users

Anda bisa mendapatkan detail header sebagai berikut-

Contoh

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users', stream=True)
print(getdata.headers)

Keluaran

E:\prequests>python makeRequest.py
{'Date': 'Sat, 30 Nov 2019 05:15:00 GMT', 'Content-Type': 'application/json; cha
rset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Set-Co
okie': '__cfduid=d2b84ccf43c40e18b95122b0b49f5cf091575090900; expires=Mon, 30-De
c-19 05:15:00 GMT; path=/; domain=.typicode.com; HttpOnly', 'X-Powered-By': 'Exp
ress', 'Vary': 'Origin, Accept-Encoding', 'Access-Control-Allow-Credentials': 't
rue', 'Cache-Control': 'max-age=14400', 'Pragma': 'no-cache', 'Expires': '-1', '
X-Content-Type-Options': 'nosniff', 'Etag': 'W/"160d-1eMSsxeJRfnVLRBmYJSbCiJZ1qQ
"', 'Content-Encoding': 'gzip', 'Via': '1.1 vegur', 'CF-Cache-Status': 'HIT', 'A
ge': '2271', 'Expect-CT': 'max-age=604800, report-uri="https://report-uri.cloudf
lare.com/cdn-cgi/beacon/expect-ct"', 'Server': 'cloudflare', 'CF-RAY': '53da574f
f99fc331-SIN'}

Untuk membaca header http, Anda dapat melakukannya sebagai berikut-

getdata.headers["Content-Encoding"] // gzip

Header Kustom

Anda juga dapat mengirim header ke URL yang dipanggil seperti yang ditunjukkan di bawah ini.

Contoh

import requests
headers = {'x-user': 'test123'}
getdata = requests.get('https://jsonplaceholder.typicode.com/users', headers=headers)

Header yang diteruskan harus dalam format string, bytestring, atau Unicode. Perilaku permintaan tidak akan berubah sesuai dengan header khusus yang diteruskan.

Header Respons

Header respons terlihat seperti di bawah ini ketika Anda memeriksa URL di alat pengembang browser, tab jaringan−

Untuk mendapatkan detail dari header dari penggunaan modul permintaan. Respon.headers seperti yang ditunjukkan di bawah ini-

Contoh

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.headers)

Keluaran

E:\prequests>python makeRequest.py
{'Date': 'Sat, 30 Nov 2019 06:08:10 GMT', 'Content-Type': 'application/json; cha
rset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Set-Co
okie': '__cfduid=de1158f1a5116f3754c2c353055694e0d1575094090; expires=Mon, 30-De
c-19 06:08:10 GMT; path=/; domain=.typicode.com; HttpOnly', 'X-Powered-By': 'Exp
ress', 'Vary': 'Origin, Accept-Encoding', 'Access-Control-Allow-Credentials': 't
rue', 'Cache-Control': 'max-age=14400', 'Pragma': 'no-cache', 'Expires': '-1', '
X-Content-Type-Options': 'nosniff', 'Etag': 'W/"160d-1eMSsxeJRfnVLRBmYJSbCiJZ1qQ
"', 'Content-Encoding': 'gzip', 'Via': '1.1 vegur', 'CF-Cache-Status': 'HIT', 'A
ge': '5461', 'Expect-CT': 'max-age=604800, report-uri="https://report-uri.cloudf
lare.com/cdn-cgi/beacon/expect-ct"', 'Server': 'cloudflare', 'CF-RAY': '53daa52f
3b7ec395-SIN'}

Anda bisa mendapatkan tajuk tertentu yang Anda inginkan sebagai berikut-

print(getdata.headers["Expect-CT"])

Keluaran

max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/exp
ect-ct

You can also get the header details by using the get() method.

print(getdata.headers.get("Expect-CT"))

Keluaran

max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/exp
ect-ct

Permintaan - Menangani Permintaan GET

Bab ini akan lebih berkonsentrasi pada permintaan GET, yang paling umum dan sangat sering digunakan. Cara kerja GET dalam modul permintaan sangat mudah. Berikut adalah contoh sederhana tentang bekerja dengan URL menggunakan metode GET.

Contoh

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.content)
getdata.content, will print all the data available in the response.

Keluaran

E:\prequests>python makeRequest.py
b'[\n {\n "id": 1,\n "name": "Leanne Graham",\n "username": "Bret",\n
"email": "[email protected]",\n "address": {\n "street": "Kulas Light
",\n "suite": "Apt. 556",\n "city": "Gwenborough",\n "zipcode": "
92998-3874",\n "geo": {\n "lat": "-37.3159",\n "lng": "81.149
6"\n }\n },\n "phone": "1-770-736-8031 x56442",\n "website": "hild
egard.org",\n "company": {\n "name": "Romaguera-Crona",\n "catchPhr
ase": "Multi-layered client-server neural-net",\n "bs": "harness real-time
e-markets"\n }\n }

Anda juga bisa mengirimkan parameter ke metode get menggunakan atribut param seperti yang ditunjukkan di bawah ini-

import requests
payload = {'id': 9, 'username': 'Delphine'}
getdata = requests.get('https://jsonplaceholder.typicode.com/users',
params=payload)
print(getdata.content)

Detailnya disimpan dalam payload objek dalam pasangan kunci / nilai dan diteruskan ke params, di dalam metode get ().

Keluaran

E:\prequests>python makeRequest.py
b'[\n {\n "id": 9,\n "name": "Glenna Reichert",\n "username": "Delphin
e",\n "email": "[email protected]",\n "address": {\n "street":
"Dayna Park",\n "suite": "Suite 449",\n "city": "Bartholomebury",\n
"zipcode": "76495-3109",\n "geo": {\n "lat": "24.6463",\n
"lng": "-168.8889"\n }\n },\n "phone": "(775)976-6794 x41206",\n "
website": "conrad.com",\n "company": {\n "name": "Yost and Sons",\n
"catchPhrase": "Switchable contextually-based project",\n "bs": "aggregate
real-time technologies"\n }\n }\n]'

Menangani Permintaan POST, PUT, PATCH, dan DELETE

Dalam bab ini, kita akan memahami cara menggunakan metode POST menggunakan pustaka permintaan dan juga mengirimkan parameter ke URL.

Menggunakan POST

Untuk permintaan PUT, perpustakaan Permintaan memiliki metode requests.post (), contohnya ditunjukkan di bawah ini:

permintaan impor

myurl = 'https://postman-echo.com/post'
myparams = {'name': 'ABC', 'email':'[email protected]'}
res = requests.post(myurl, data=myparams)
print(res.text)

Keluaran

E:\prequests>python makeRequest.py
{"args":{},"data":"","files":{},"form":{"name":"ABC","email":"[email protected]"},"headers":{"x-forwarded-proto":"https","host":"postman-echo.com","content-length":"30","accept":"*/*","accept-encoding":"gzip,deflate","content-type":"application/x-www-form-urlencoded","user-agent":"python-requests/2.22.0","x-forwarded-port":"443"},"json":{"name":"ABC","email":"[email protected]"},"url":"https://postman-echo.com/post"}

Dalam contoh yang diperlihatkan di atas, Anda bisa meneruskan data formulir sebagai pasangan nilai kunci ke parameter data di dalam requests.post (). Kami juga akan melihat bagaimana bekerja dengan PUT, PATCH dan DELETE dalam modul permintaan.

Menggunakan PUT

Untuk permintaan PUT, pustaka Permintaan memiliki metode requests.put (), contohnya ditunjukkan di bawah ini.

import requests
myurl = 'https://postman-echo.com/put'
myparams = {'name': 'ABC', 'email':'[email protected]'}
res = requests.put(myurl, data=myparams)
print(res.text)

Keluaran

E:\prequests>python makeRequest.py
{"args":{},"data":"","files":{},"form":{"name":"ABC","email":"[email protected]"},"h
eaders":{"x-forwarded-proto":"https","host":"postman-echo.com","content-length":
"30","accept":"*/*","accept-encoding":"gzip, deflate","content-type":"applicatio
n/x-www-form-urlencoded","user-agent":"python-requests/2.22.0","x-forwarded-port
":"443"},"json":{"name":"ABC","email":"[email protected]"},"url":"https://postman-ec ho.com/put"}

Menggunakan PATCH

Untuk permintaan PATCH, perpustakaan Permintaan memiliki metode requests.patch (), contohnya ditampilkan di bawah ini.

import requests
myurl = https://postman-echo.com/patch'
res = requests.patch(myurl, data="testing patch")
print(res.text)

Keluaran

E:\prequests>python makeRequest.py
{"args":{},"data":{},"files":{},"form":{},"headers":{"x-forwarded-proto":"https"
,"host":"postman-echo.com","content-length":"13","accept":"*/*","accept-encoding
":"gzip, deflate","user-agent":"python-requests/2.22.0","x-forwarded-port":"443"
},"json":null,"url":"https://postman-echo.com/patch"}

Menggunakan DELETE

Untuk permintaan DELETE, perpustakaan Permintaan memiliki metode requests.delete (), contohnya ditunjukkan di bawah ini.

import requests
myurl = 'https://postman-echo.com/delete'
res = requests.delete(myurl, data="testing delete")
print(res.text)

Keluaran

E:\prequests>python makeRequest.py
{"args":{},"data":{},"files":{},"form":{},"headers":{"x-forwarded-proto":"https"
,"host":"postman-echo.com","content-length":"14","accept":"*/*","accept-encoding
":"gzip, deflate","user-agent":"python-requests/2.22.0","x-forwarded-port":"443"
},"json":null,"url":"https://postman-echo.com/delete"}

Permintaan - Unggah File

Pada bab ini, kita akan mengupload file menggunakan request dan membaca isi dari file yang diupload. Kita bisa melakukannya dengan menggunakanfiles param seperti yang ditunjukkan pada contoh di bawah ini.

Kami akan menggunakan http://httpbin.org/posting untuk mengunggah file.

Contoh

import requests
myurl = 'https://httpbin.org/post'
files = {'file': open('test.txt', 'rb')}
getdata = requests.post(myurl, files=files)
print(getdata.text)

Test.txt

File upload test using Requests

Contoh

var total = [0, 1, 2, 3].reduceRight(function(a, b){ return a + b; }); 
console.log("total is : " + total );

Keluaran

E:\prequests>python makeRequest.py
{
  "args": {},
  "data": "",
  "files": {
   "file": "File upload test using Requests"
  },
  "form": {},
  "headers": {
   "Accept": "*/*",
   "Accept-Encoding": "gzip, deflate",
   "Content-Length": "175",
   "Content-Type": "multipart/form-data; 
boundary=28aee3a9d15a3571fb80d4d2a94bf
d33",
   "Host": "httpbin.org",
   "User-Agent": "python-requests/2.22.0"
  },
  "json": null,
  "origin": "117.223.63.135, 117.223.63.135",
  "url": "https://httpbin.org/post"
}

Dimungkinkan juga untuk mengirim isi file seperti yang ditunjukkan di bawah-

Contoh

import requests
myurl = 'https://httpbin.org/post'
files = {'file': ('test1.txt', 'Welcome to TutorialsPoint')}
getdata = requests.post(myurl, files=files)
print(getdata.text)

Keluaran

E:\prequests>python makeRequest.py
{
  "args": {},
  "data": "",
  "files": {
   "file": "Welcome to TutorialsPoint"
},
"form": {},
"headers": {
   "Accept": "*/*",
   "Accept-Encoding": "gzip, deflate",
   "Content-Length": "170",
   "Content-Type": "multipart/form-data; boundary=f2837238286fe40e32080aa7e172b
e4f",
  "Host": "httpbin.org",
  "User-Agent": "python-requests/2.22.0"
},
  "json": null,
  "origin": "117.223.63.135, 117.223.63.135",
  "url": "https://httpbin.org/post"
}

Permintaan - Bekerja dengan Cookies

Bab ini akan membahas cara menangani cookie. Anda bisa mendapatkan cookie serta mengirim cookie Anda saat memanggil URL menggunakan pustaka permintaan.

Url, https://jsonplaceholder.typicode.com/users ketika klik di browser kita bisa mendapatkan detail cookie seperti yang ditunjukkan di bawah ini−

Anda dapat membaca cookie seperti yang ditunjukkan di bawah-

Contoh

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users')
print(getdata.cookies["__cfduid"])

Keluaran

E:\prequests>python makeRequest.py
d1733467caa1e3431fb7f768fa79ed3741575094848

Anda juga dapat mengirim cookie saat kami membuat permintaan.

Contoh

import requests
cookies = dict(test='test123')
getdata = requests.get('https://httpbin.org/cookies',cookies=cookies)
print(getdata.text)

Keluaran

E:\prequests>python makeRequest.py
{
   "cookies": {
   "test": "test123"
}
}

Permintaan - Bekerja dengan Kesalahan

Bab ini akan membahas bagaimana menangani kesalahan yang datang saat bekerja dengan pustaka permintaan Http. Itu selalu merupakan praktik yang baik untuk memiliki kesalahan yang dikelola untuk semua kasus yang memungkinkan.

Pengecualian Kesalahan

Modul permintaan memberikan jenis pengecualian kesalahan berikut-

ConnectionError- Ini akan dimunculkan, jika ada kesalahan koneksi. Misalnya, jaringan gagal, kesalahan DNS sehingga perpustakaan Permintaan akan memunculkan pengecualian ConnectionError.

Response.raise_for_status()- Berdasarkan kode status yaitu 401, 404 itu akan memunculkan HTTPError untuk url yang diminta.

HTTPError- Kesalahan ini akan dimunculkan untuk respons tidak valid yang turun untuk permintaan yang dibuat.

Timeout- Kesalahan muncul karena waktu tunggu untuk URL yang diminta.

TooManyRedirects- Jika batasnya dilintasi untuk pengalihan maksimum daripada itu akan menimbulkan kesalahan TooManyRedirects.

Contoh

Berikut adalah contoh kesalahan yang ditampilkan untuk timeout−

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users',timeout=0.001)
print(getdata.text)

Keluaran

raise ConnectTimeout(e, request=request)
requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='jsonplaceholder.ty
picode.com', port=443): Max retries exceeded with url: /users (Caused by Connect
TimeoutError(<urllib3.connection.VerifiedHTTPSConnection object at
0x000000B02AD
E76A0>, 'Connection to jsonplaceholder.typicode.com timed out. (connect timeout= 0.001)'))

Permintaan - Penanganan Timeout

Batas waktu dapat dengan mudah ditambahkan ke URL yang Anda minta. Kebetulan, Anda menggunakan URL pihak ketiga dan menunggu tanggapan. Itu selalu merupakan praktik yang baik untuk memberikan waktu tunggu pada URL, karena kami mungkin ingin URL merespons dalam rentang waktu dengan tanggapan atau kesalahan. Tidak melakukannya, dapat menyebabkan menunggu permintaan itu tanpa batas.

Kita dapat memberikan batas waktu ke URL dengan menggunakan parameter batas waktu dan nilai dilewatkan dalam hitungan detik seperti yang ditunjukkan pada contoh di bawah−

Contoh

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users',timeout=0.001)
print(getdata.text)

Keluaran

raise ConnectTimeout(e, request=request)
requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='jsonplaceholder.ty
picode.com', port=443): Max retries exceeded with url: /users (Caused by Connect
TimeoutError(<urllib3.connection.VerifiedHTTPSConnection object at 0x000000B02AD
E76A0>, 'Connection to jsonplaceholder.typicode.com timed out. (connect timeout=
0.001)'))

Batas waktu yang diberikan adalah sebagai berikut-

getdata = requests.get('https://jsonplaceholder.typicode.com/users',timeout=0.001)

Eksekusi melempar kesalahan batas waktu koneksi seperti yang ditunjukkan dalam output. Waktu tunggu yang diberikan adalah 0,001, yang tidak mungkin bagi permintaan untuk mendapatkan kembali respons dan melontarkan kesalahan. Sekarang, kami akan menambah waktu tunggu dan pemeriksaan.

Contoh

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users',timeout=1.000)
print(getdata.text)

Keluaran

E:\prequests>python makeRequest.py
[
 {
   "id": 1,
   "name": "Leanne Graham",
   "username": "Bret",
   "email": "[email protected]",
   "address": {
   "street": "Kulas Light",
   "suite": "Apt. 556",
   "city": "Gwenborough",
   "zipcode": "92998-3874",
   "geo": {
   "lat": "-37.3159",
   "lng": "81.1496"
   }
  },
   "phone": "1-770-736-8031 x56442",
   "website": "hildegard.org",
   "company": {
   "name": "Romaguera-Crona",
   "catchPhrase": "Multi-layered client-server neural-net",
   "bs": "harness real-time e-markets"
 }

Dengan waktu tunggu 1 detik, kita bisa mendapatkan respon untuk URL yang diminta.

Permintaan - Menangani Pengalihan

Bab ini akan melihat bagaimana perpustakaan Permintaan menangani kasus pengalihan url.

Contoh

import requests
getdata = requests.get('http://google.com/')
print(getdata.status_code)
print(getdata.history)

Url− http://google.com akan dialihkan menggunakan kode status 301 (Dipindahkan Secara Permanen) ke https://www.google.com/. Pengalihan akan disimpan dalam sejarah.

Keluaran

Ketika kode di atas dijalankan, kita mendapatkan hasil sebagai berikut-

E:\prequests>python makeRequest.py
200
[<Response [301]>]

Anda dapat menghentikan pengalihan URL menggunakan allow_redirects=False. Ini dapat dilakukan dengan metode GET, POST, OPTIONS, PUT, DELETE, PATCH yang digunakan.

Contoh

Berikut adalah contoh yang sama.

import requests
getdata = requests.get('http://google.com/', allow_redirects=False)
print(getdata.status_code)
print(getdata.history)
print(getdata.text)

Sekarang jika Anda memeriksa hasilnya, pengalihan tidak akan diizinkan dan akan mendapatkan kode status 301.

Keluaran

E:\prequests>python makeRequest.py
301
[]
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

Permintaan - Penanganan Sejarah

Anda bisa mendapatkan riwayat URL tertentu dengan menggunakan response.history. Jika URL yang diberikan memiliki pengalihan, hal yang sama akan disimpan dalam sejarah.

Untuk sejarah

import requests
getdata = requests.get('http://google.com/')
print(getdata.status_code)
print(getdata.history)

Keluaran

E:\prequests>python makeRequest.py
200
[<Response [301]>]

Itu response.historyproperti akan memiliki rincian objek respons yang dilakukan berdasarkan permintaan. Nilai yang ada akan diurutkan dari yang terlama ke yang terbaru. Ituresponse.history properti melacak semua pengalihan yang dilakukan pada URL yang diminta.

Permintaan - Sesi Penanganan

Untuk menjaga data di antara permintaan, Anda membutuhkan sesi. Jadi, jika host yang sama dipanggil berulang kali, Anda dapat menggunakan kembali koneksi TCP yang pada gilirannya akan meningkatkan kinerja. Sekarang mari kita lihat, bagaimana mempertahankan cookie di seluruh permintaan yang dibuat menggunakan sesi.

Menambahkan cookie menggunakan sesi

import requests
req = requests.Session()
cookies = dict(test='test123')
getdata = req.get('https://httpbin.org/cookies',cookies=cookies)
print(getdata.text)

Keluaran

E:\prequests>python makeRequest.py
{
   "cookies": {
   "test": "test123"
}
}

Dengan menggunakan sesi, Anda dapat menyimpan data cookie di seluruh permintaan. Dimungkinkan juga untuk melewatkan data tajuk menggunakan sesi seperti yang ditunjukkan di bawah-

Contoh

import requests
req = requests.Session()
req.headers.update({'x-user1': 'ABC'})
headers = {'x-user2': 'XYZ'}
getdata = req.get('https://httpbin.org/headers', headers=headers)    
print(getdata.headers)

Permintaan - Sertifikasi SSL

Sertifikat SSL adalah fitur keamanan yang dilengkapi dengan url aman. Saat Anda menggunakan pustaka Permintaan, itu juga memverifikasi sertifikat SSL untuk URL https yang diberikan. Verifikasi SSL diaktifkan secara default di modul permintaan dan akan menampilkan kesalahan jika sertifikat tidak ada.

Bekerja dengan URL aman

Berikut adalah contoh bekerja dengan URL yang aman-

import requests
getdata = requests.get(https://jsonplaceholder.typicode.com/users)
print(getdata.text)

Keluaran

E:\prequests>python makeRequest.py
[
   {
   "id": 1,
   "name": "Leanne Graham",
   "username": "Bret",
   "email": "[email protected]",
   "address": {
   "street": "Kulas Light",
   "suite": "Apt. 556",
   "city": "Gwenborough",
   "zipcode": "92998-3874",
   "geo": {
   "lat": "-37.3159",
   "lng": "81.1496"
   }
  },
   "phone": "1-770-736-8031 x56442",
   "website": "hildegard.org",
   "company": {
   "name": "Romaguera-Crona",
   "catchPhrase": "Multi-layered client-server neural-net",
   "bs": "harness real-time e-markets"
   }
  }
]

Kami dengan mudah mendapatkan respons dari URL https di atas, dan itu karena modul permintaan dapat memverifikasi sertifikat SSL.

Anda dapat menonaktifkan verifikasi SSL hanya dengan menambahkan verifikasi = False seperti yang ditunjukkan pada contoh di bawah ini.

Contoh

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users', verify=False)
print(getdata.text)

Anda akan mendapatkan hasilnya, tetapi juga akan memberikan pesan peringatan bahwa, sertifikat SSL tidak diverifikasi dan disarankan untuk menambahkan verifikasi sertifikat.

Keluaran

E:\prequests>python makeRequest.py
connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being
made. Adding certificate verification is strongly advised. See: https://urllib3
   .readthedocs.io/en/latest/advanced-usage.htm  l#ssl-warnings
 InsecureRequestWarning)
[
 {
  "id": 1,
   "name": "Leanne Graham",
   "username": "Bret", 
   "email": "[email protected]",
   "address": {
   "street": "Kulas Light",
   "suite": "Apt. 556",
   "city": "Gwenborough",
   "zipcode": "92998-3874",
   "geo": {
   "lat": "-37.3159",
   "lng": "81.1496"
   }
  },
   "phone": "1-770-736-8031 x56442",
   "website": "hildegard.org",
   "company": {
   "name": "Romaguera-Crona",
   "catchPhrase": "Multi-layered   client-server neural-net",
   "bs": "harness real-time e-markets"
  }
 }
]

Anda juga dapat memverifikasi sertifikat SSL dengan menghostingnya di pihak Anda, dan memberikan jalur menggunakan verify param seperti yang ditunjukkan di bawah ini.

Contoh

import requests
getdata = requests.get('https://jsonplaceholder.typicode.com/users', verify='C:\Users\AppData\Local\certificate.txt')
print(getdata.text)

Keluaran

E:\prequests>python makeRequest.py
[
  {
   "id": 1,
   "name": "Leanne Graham",
   "username": "Bret",
   "email": "[email protected]",
   "address": {
   "street": "Kulas Light",
   "suite": "Apt. 556",
   "city": "Gwenborough",
   "zipcode": "92998-3874",
   "geo": {
   "lat": "-37.3159",
   "lng": "81.1496"
   }
  },
   "phone": "1-770-736-8031 x56442",
   "website": "hildegard.org",
   "company": {
   "name": "Romaguera-Crona",
   "catchPhrase": "Multi-layered   client-server neural-net",
   "bs": "harness real-time e-markets"
   }
  }
]

Permintaan - Otentikasi

Bab ini akan membahas jenis otentikasi yang tersedia di modul Permintaan.

Kita akan membahas yang berikut-

  • Bekerja dari Otentikasi dalam Permintaan HTTP

  • Otentikasi Dasar

  • Otentikasi Intisari

  • Autentikasi OAuth2

Bekerja dari Otentikasi dalam Permintaan HTTP

Otentikasi HTTP ada di sisi server meminta beberapa informasi otentikasi seperti nama pengguna, kata sandi ketika klien meminta URL. Ini adalah keamanan tambahan untuk permintaan dan respons yang dipertukarkan antara klien dan server.

Dari sisi klien, informasi otentikasi tambahan yaitu nama pengguna dan kata sandi dapat dikirim di header, yang kemudian di sisi server akan divalidasi. Respons akan dikirim dari sisi server hanya jika autentikasi valid.

Pustaka permintaan paling sering menggunakan autentikasi di requests.auth, yaitu Autentikasi Dasar ( HTTPBasicAuth ) dan Otentikasi Intisari ( HTTPDigestAuth ).

Otentikasi Dasar

Ini adalah bentuk paling sederhana untuk memberikan otentikasi ke server. Untuk bekerja dengan otentikasi dasar, kita akan menggunakan kelas HTTPBasicAuth yang tersedia dengan pustaka permintaan.

Contoh

Berikut adalah contoh cara menggunakannya.

import requests
from requests.auth import HTTPBasicAuth
response_data = requests.get('httpbin.org/basic-auth/admin/admin123', auth=HTTPDigestAuth('admin', 'admin123'))
print(response_data.text)

Kami memanggil url, https://httpbin.org/basic-auth/admin/admin123dengan pengguna sebagai admin dan kata sandi sebagai admin123 .

Jadi, URL ini tidak akan berfungsi tanpa otentikasi, yaitu pengguna dan kata sandi. Setelah Anda memberikan otentikasi menggunakan parameter auth, maka hanya server yang akan memberikan respons.

Keluaran

E:\prequests>python makeRequest.py
{
   "authenticated": true,
   "user": "admin"
}

Otentikasi Intisari

Ini adalah bentuk otentikasi lain yang tersedia dengan permintaan. Kami akan menggunakan kelas HTTPDigestAuth dari permintaan.

Contoh

import requests
from requests.auth import HTTPDigestAuth
response_data = requests.get('https://httpbin.org/digest-auth/auth/admin/admin123>, auth=HTTPDigestAuth('admin', 'admin123'))
print(response_data.text)

Keluaran

E:\prequests>python makeRequest.py
{
   "authenticated": true,
   "user": "admin"
}

Autentikasi OAuth2

Untuk menggunakan OAuth2 Authentication, kita membutuhkan pustaka "request_oauth2". Untuk menginstal "request_oauth2" lakukan yang berikut-

pip install requests_oauth2

Tampilan di terminal Anda saat menginstal akan seperti yang ditunjukkan di bawah ini−

E:\prequests>pip install requests_oauth2
Collecting requests_oauth2
Downloading https://files.pythonhosted.org/packages/52/dc/01c3c75e6e7341a2c7a9
71d111d7105df230ddb74b5d4e10a3dabb61750c/requests-oauth2-0.3.0.tar.gz
Requirement already satisfied: requests in c:\users\xyz\appdata\local\programs
\python\python37\lib\site-packages (from requests_oauth2) (2.22.0)
Requirement already satisfied: six in c:\users\xyz\appdata\local\programs\pyth
on\python37\lib\site-packages (from requests_oauth2) (1.12.0)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in c:\use
rs\xyz\appdata\local\programs\python\python37\lib\site-packages (from requests
->requests_oauth2) (1.25.3)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\xyz\appdata\loca
l\programs\python\python37\lib\site-packages (from requests->requests_oauth2) (2
019.3.9)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in c:\users\xyz\appdata\l
ocal\programs\python\python37\lib\site-packages (from requests->requests_oauth2)
(3.0.4)
Requirement already satisfied: idna<2.9,>=2.5 in c:\users\xyz\appdata\local\pr
ograms\python\python37\lib\site-packages (from requests->requests_oauth2) (2.8)
Building wheels for collected packages: requests-oauth2
Building wheel for requests-oauth2 (setup.py) ... done
Stored in directory: C:\Users\xyz\AppData\Local\pip\Cache\wheels\90\ef\b4\43
3743cbbc488463491da7df510d41c4e5aa28213caeedd586
Successfully built requests-oauth2

Kami selesai menginstal "request-oauth2". Untuk menggunakan API Google, Twitter kami memerlukan persetujuannya dan hal yang sama dilakukan menggunakan otentikasi OAuth2.

Untuk autentikasi OAuth2, kami memerlukan ID Klien dan Kunci Rahasia. Rincian bagaimana mendapatkannya, disebutkan dihttps://developers.google.com/identity/protocols/OAuth2.

Nanti, login ke Google API Console yang tersedia di https://console.developers.google.com/dan dapatkan id klien dan kunci rahasia.

Contoh

Berikut adalah contoh bagaimana menggunakan "request-oauth2".

import requests
from requests_oauth2.services import GoogleClient
google_auth = GoogleClient(
   client_id="xxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
redirect_uri="http://localhost/auth/success.html",
)
a = google_auth.authorize_url(
   scope=["profile", "email"],
   response_type="code",
)
res = requests.get(a)
print(res.url)

Kami tidak akan dapat mengarahkan ke URL yang diberikan, karena itu perlu masuk ke akun Gmail, tetapi di sini, Anda akan melihat dari contoh, bahwa google_auth berfungsi dan URL resmi diberikan.

Keluaran

E:\prequests>python oauthRequest.py
https://accounts.google.com/o/oauth2/auth?redirect_uri=
http%3A%2F%2Flocalhost%2Fauth%2Fsuccess.html&
client_id=xxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com&
scope=profile+email&response_type=code

Permintaan - Event Hooks

Kita bisa menambahkan event ke URL yang diminta menggunakan event hooks. Dalam contoh di bawah ini, kita akan menambahkan fungsi panggilan balik yang akan dipanggil saat respons tersedia.

Contoh

Untuk menambahkan callback, kita perlu menggunakan parameter hooks seperti yang ditunjukkan pada contoh di bawah-

mport requests
def printData(r, *args, **kwargs):
   print(r.url)
   print(r.text)
getdata = requests.get('https://jsonplaceholder.typicode.com/users', 
hooks={'response': printData})

Keluaran

E:\prequests>python makeRequest.py
https://jsonplaceholder.typicode.com/users
[
{
   "id": 1,
   "name": "Leanne Graham",
   "username": "Bret",
   "email": "[email protected]",
   "address": {
   "street": "Kulas Light",
   "suite": "Apt. 556",
   "city": "Gwenborough",
   "zipcode": "92998-3874",
   "geo": {
    "lat": "-37.3159",
    "lng": "81.1496"
   }
  }, 
   "phone": "1-770-736-8031 x56442",
   "website": "hildegard.org",
   "company": {
   "name": "Romaguera-Crona",
   "catchPhrase": "Multi-layered client-server neural-net",
   "bs": "harness real-time e-markets"
   }
  }
]

Anda juga dapat memanggil beberapa fungsi panggilan balik seperti yang ditunjukkan di bawah-

Contoh

import requests
def printRequestedUrl(r, *args, **kwargs):
   print(r.url)
def printData(r, *args, **kwargs):
   print(r.text)
getdata = requests.get('https://jsonplaceholder.typicode.com/users', hooks={'response': [printRequestedUrl, printData]})

Keluaran

E:\prequests>python makeRequest.py
https://jsonplaceholder.typicode.com/users
[
  {
   "id": 1,
   "name": "Leanne Graham",
   "username": "Bret",
   "email": "[email protected]",
   "address": {
   "street": "Kulas Light",
   "suite": "Apt. 556",
   "city": "Gwenborough",
   "zipcode": "92998-3874",
   "geo": {
   "lat": "-37.3159",
   "lng": "81.1496"
 }
  },
   "phone": "1-770-736-8031 x56442",
   "website": "hildegard.org",
   "company": {
   "name": "Romaguera-Crona",
   "catchPhrase": "Multi-layered client-server neural-net",
    "bs": "harness real-time e-markets"
   }
  }
]

Anda juga dapat menambahkan pengait ke Sesi yang dibuat seperti yang ditunjukkan di bawah ini-

Contoh

import requests
def printData(r, *args, **kwargs):
print(r.text)
s = requests.Session()
s.hooks['response'].append(printData)
s.get('https://jsonplaceholder.typicode.com/users')

Keluaran

E:\prequests>python makeRequest.py
[
 {
   "id": 1,
   "name": "Leanne Graham",
   "username": "Bret",
   "email": "[email protected]",
   "address": {
   "street": "Kulas Light",
   "suite": "Apt. 556",
   "city": "Gwenborough",
   "zipcode": "92998-3874",
   "geo": {
   "lat": "-37.3159",
   "lng": "81.1496"
   }
  },
   "phone": "1-770-736-8031 x56442",
   "website": "hildegard.org",
   "company": {
   "name": "Romaguera-Crona",
   "catchPhrase": "Multi-layered client-server neural-net",
   "bs": "harness real-time e-markets"
   }
  }
]

Permintaan - Proksi

Sejauh ini, kami telah melihat klien langsung terhubung dan berbicara ke server. Menggunakan proxy, interaksi terjadi sebagai berikut-

  • Klien mengirimkan permintaan ke proxy.

  • Proksi mengirimkan permintaan ke server.

  • Server mengirimkan kembali respons ke proxy.

  • Proksi akan mengirimkan tanggapan kembali ke klien.

Menggunakan Http-proxy adalah keamanan tambahan yang ditugaskan untuk mengelola pertukaran data antara klien dan server. Pustaka permintaan juga memiliki ketentuan untuk menangani proxy, dengan menggunakan parameter proxy seperti yang ditunjukkan di bawah ini-

Contoh

import requests
proxies = {
'http': 'http://localhost:8080'
}
res = requests.get('http://httpbin.org/', proxies=proxies)
print(res.status_code)

Permintaan akan diarahkan ke ('http://localhost:8080 URL.

Keluaran

200

Permintaan - Scraping Web menggunakan Permintaan

Kami telah melihat bagaimana kami bisa mendapatkan data dari URL tertentu menggunakan pustaka permintaan python. Kami akan mencoba mengambil data dari situsTutorialspoint yang tersedia di https://www.tutorialspoint.com/tutorialslibrary.htm menggunakan berikut-

  • Meminta Perpustakaan

  • Perpustakaan sup yang indah dari python

Kami telah menginstal pustaka Permintaan, mari kita sekarang menginstal paket sup Cantik. Ini adalah situs resmi untukbeautiful soup Tersedia di https://www.crummy.com/software/BeautifulSoup/bs4/doc/ jika Anda ingin menjelajahi lebih banyak fungsi sup yang indah.

Menginstal Beautifulsoup

Kita akan melihat bagaimana menginstal Beautiful Soup di bawah−

E:\prequests>pip install beautifulsoup4
Collecting beautifulsoup4
Downloading https://files.pythonhosted.org/packages/3b/c8/a55eb6ea11cd7e5ac4ba
cdf92bac4693b90d3ba79268be16527555e186f0/beautifulsoup4-4.8.1-py3-none-any.whl (
101kB)
|████████████████████████████████| 102kB 22kB/s
Collecting soupsieve>=1.2 (from beautifulsoup4)
Downloading https://files.pythonhosted.org/packages/81/94/03c0f04471fc245d08d0
a99f7946ac228ca98da4fa75796c507f61e688c2/soupsieve-1.9.5-py2.py3-none-any.whl
Installing collected packages: soupsieve, beautifulsoup4
Successfully installed beautifulsoup4-4.8.1 soupsieve-1.9.5

Kami sekarang memiliki pustaka permintaan python dan sup indah terpasang.

Sekarang mari kita tulis kodenya, yang akan menghapus data dari URL yang diberikan.

Mengikis web

import requests
from bs4 import BeautifulSoup
res = requests.get('https://www.tutorialspoint.com/tutorialslibrary.htm')
print("The status code is ", res.status_code)
print("\n")
soup_data = BeautifulSoup(res.text, 'html.parser')
print(soup_data.title)
print("\n")
print(soup_data.find_all('h4'))

Dengan menggunakan pustaka permintaan, kita bisa mengambil konten dari URL yang diberikan dan pustaka sup yang indah membantu untuk menguraikannya dan mengambil detail seperti yang kita inginkan.

Anda dapat menggunakan pustaka sup yang indah untuk mengambil data menggunakan tag Html, kelas, id, pemilih css, dan banyak cara lainnya. Berikut adalah output yang kita dapatkan dimana kita telah mencetak judul halaman dan juga semua tag h4 pada halaman.

Keluaran

E:\prequests>python makeRequest.py
The status code is 200
<title>Free Online Tutorials and Courses</title>
[<h4>Academic</h4>, <h4>Computer Science</h4>, <h4>Digital Marketing</h4>, <h4>M
onuments</h4>,<h4>Machine Learning</h4>, <h4>Mathematics</h4>, <h4>Mobile Devel
opment</h4>,<h4>SAP</h4>, <h4>Software Quality</h4>, <h4>Big Data & Analyti
cs</h4>, <h4>Databases</h4>, <h4>Engineering Tutorials</h4>, <h4>Mainframe Devel
opment</h4>, <h4>Microsoft Technologies</h4>, <h4>Java Technologies</h4>,<h4>XM
L Technologies</h4>, <h4>Python Technologies</h4>, <h4>Sports</h4>, <h4>Computer
Programming</h4>,<h4>DevOps</h4>, <h4>Latest Technologies</h4>, <h4>Telecom</h4>, <h4>Exams Syllabus</h4>, <h4>UPSC IAS Exams</h4>, <h4>Web Development</h4>,
<h4>Scripts</h4>, <h4>Management</h4>,<h4>Soft Skills</h4>, <h4>Selected Readin
g</h4>, <h4>Misc</h4>]