Cum se utilizează Python cURL?

Curl este un utilitar de linie de comandă folosit ca client HTTP. Este popular pentru a face cereri HTTP din linia de comandă. cURL poate fi folosit pentru a scrie scripturi pentru web scraping, pentru a verifica starea de sănătate a site-ului și pentru a descărca fișiere din linia de comandă.

Este incredibil de simplu și poate fi folosit în multe limbaje de programare. Acest articol vă ghidează ce este cURL și cum să îl utilizați în Python.

Ce este cURL?

Conform site-ului web, cURL înseamnă „client URL”. Este un instrument de linie de comandă și o bibliotecă pentru transferul de date folosind diferite protocoale de rețea la nivel de aplicație, cum ar fi HTTP, HTTPS, FTP și IMAP.

Este incredibil de popular și folosit în peste 10 miliarde de instalații pe dispozitive precum radiouri, televizoare, routere, imprimante și computere. cURL este complet gratuit și open-source. Codul său sursă este disponibil pe GitHub.

cURL cazuri de utilizare

cURL este foarte util și versatil. Mai jos sunt enumerate cele mai populare cazuri de utilizare pentru cURL. Deși lista nu este exhaustivă, următoarele sunt doar câteva dintre cele mai populare cazuri:

  • Testarea API-urilor: poate verifica dacă API-ul funcționează corect, returnând datele corecte pentru o anumită solicitare. În plus, poate fi folosit și pentru a verifica viteza API-ului, adică cât de repede răspunde la solicitări. Puteți scrie un script pentru a verifica periodic starea API-ului și pentru a trimite alerte când ceva nu merge bine.
  • Web Scraping: De asemenea, poate extrage automat date de pe site-uri web. cURL poate fi folosit împreună cu multe limbaje de programare și ca o comandă Bash. Cu cURL, puteți prelua datele de pe site-uri web în mod dinamic. Din HTML de răspuns, puteți analiza și extrage datele de care aveți nevoie. Dacă sunteți interesat de web scraping, este posibil să doriți să verificați API-ul tipstrick.ro Web Scraping, care facilitează scrapingul datelor.
  • Descărcarea datelor: cu cURL, puteți salva răspunsul la solicitări într-un fișier. Aceste răspunsuri pot fi date de la solicitări API sau fișiere de pe un server. În mod efectiv, prin scrierea răspunsului la un fișier, ați descărcat fișierul. Deoarece cURL este un instrument de linie de comandă, puteți automatiza acest proces pentru a descărca o mulțime de fișiere simultan.
  Fiecare zgomot deodată vă permite să ascultați muzică din fiecare gen

Cum se utilizează cURL în Python (PycURL)

Se instalează PycURL

Pentru a folosi cURL în Python, folosim biblioteca PycURL. PycURL este o interfață Python pentru biblioteca cURL. Acesta creează un înveliș subțire peste biblioteca deja rapidă cURL. Acest lucru face ca PycURL să fie mai rapid decât alte biblioteci pentru a face solicitări, cum ar fi urllib și solicitări. Pentru a utiliza PycURL, mai întâi trebuie să îl instalați. Există instrucțiuni detaliate aici, dar o modalitate ușoară de a-l instala este utilizarea pip.

pip install PycURL

Pe Ubuntu 22.04, a trebuit să instalez instrumente suplimentare înainte de a instala PycURL. Utilizați această comandă înainte de a încerca să instalați PycURL cu pip:

sudo apt install libcurl4-openssl-dev libssl-dev

Efectuarea unei cereri GET simplă

Pentru a face o solicitare, începeți prin a crea un script Python în care să scrieți codul. Deschideți fișierul cu un editor de text. Voi folosi Vim, dar puteți folosi orice doriți. Pentru a deschide fișierul cu Vim, utilizați comanda de mai jos:

vim pycurl.py

Aici, pycurl.py este numele fișierului în care voi scrie codul, dar puteți denumi fișierul dvs. orice.

Apoi, importăm clasa cURL din modulul PycURL

from pycurl import Curl

După importul PycURL, importăm BytesIO din io. Vom avea nevoie de acest lucru pentru a crea un buffer pentru a scrie răspunsul lui PycURL.

from io import BytesIO

Apoi instanțiem o nouă instanță Curl.

c = Curl()

Apoi, instanțiem BytesIO pentru a crea un nou buffer. PycURL nu are un mecanism de stocare încorporat pentru a stoca răspunsurile. Deci trebuie să creăm un buffer și să-i spunem unde să scrie datele.

buffer = BytesIO()

Cu tamponul creat, putem seta opțiuni pentru obiectul nostru client. În acest caz, dorim să setăm două opțiuni; primul este adresa URL pe care o solicităm. Al doilea este locul unde vrem să scriem corpul răspunsului. Iată codul pentru a face acest lucru:

c.setopt(c.URL, 'http://pycurl.io/')
c.setopt(c.WRITEDATA, buffer)

Odată ce facem acest lucru, putem solicita apelând metoda perform a obiectului client și apoi închidem cererea apelând metoda close.

c.perform()
c.close()

Pentru a obține răspunsul, apelăm metoda getvalue() a obiectului tampon și o decodăm. Apoi îl putem imprima pe consolă.

body = buffer.getvalue()
print(body.decode('iso-8859-1'))

Fișierul dvs. ar trebui să arate astfel:

from pycurl import Curl
from io import BytesIO

# Create a pycUrl instance
c = Curl()
buffer = BytesIO()

c.setopt(c.URL, 'http://pycurl.io/')
c.setopt(c.WRITEDATA, buffer)

# Make the request
c.perform()

# Close the connection
c.close()

body = buffer.getvalue()
print(body.decode('iso-8859-1'))

După executarea scriptului, ar trebui să obțineți următoarea ieșire:

  5 instrumente gratuite de acces la distanță pentru conectarea la un PC sau Mac

Efectuarea unei cereri POST

Pentru a face o cerere POST, va trebui să setați opțiunile POSTFIELDS ale obiectului client cURL. De exemplu, iată o solicitare care face o solicitare POST către API-ul JSON Placeholder.

from io import BytesIO
from json import dumps
from pycurl import Curl

# Create a pycUrl instance
c = Curl()
buffer = BytesIO()

# Create a data dictionary
data = {
    'userId': 1,
    'title': 'Lorem Ipsum',
    'body': 'Dolor sit amet'
}

# Encode the data to json
encoded_data = dumps(data)

# Set request options
c.setopt(c.URL, 'https://jsonplaceholder.typicode.com/posts')
c.setopt(c.HTTPHEADER, ['Accept: application/json', 'Content-Type: application/json'])
c.setopt(c.POSTFIELDS, encoded_data)
c.setopt(c.WRITEDATA, buffer)

# Make the request
c.perform()

# Close the connection
c.close()

body = buffer.getvalue()
print(body.decode('iso-8859-1'))

În codul de mai sus, am creat un obiect dicționar cu datele pe care le voi trimite ca parte a solicitării. Apoi, am codificat datele în JSON și le-am trimis atașat ca sarcină utilă la cerere, setând opțiunea POSTFIELDS la datele codificate. Am specificat, de asemenea, antete pentru a specifica tipul de conținut al cererii și tipul de date de răspuns acceptat. Când rulați codul, ar trebui să primiți un răspuns ca acesta.

Scrierea răspunsurilor la fișiere

De asemenea, puteți trece un buffer de fișier către opțiunea cURL WRITEDATA. Aceasta va scrie datele răspunsului în fișier. Următorul exemplu ilustrează conceptul:

from pycurl import Curl

file_name="output.json"

# Opening the file in write mode
with open(file_name, 'wb') as f:
    
    # Creating a Curl instance
    c = Curl()

    # Set request options
    c.setopt(c.URL, 'https://jsonplaceholder.typicode.com/users/1')
    c.setopt(c.HTTPHEADER, ['Accept: application/json'])
    c.setopt(c.WRITEDATA, f)

    # Make the request
    c.perform()

    # Close the connection
    c.close()

    print(f'Wrote output to {file_name}')

Alternative la PycURL

PycURL oferă doar un strat subțire peste biblioteca cURL. Acest lucru îl face extrem de personalizabil, deoarece aveți mai mult control asupra funcțiilor de nivel inferior.

Cu toate acestea, este mai greu de utilizat și, prin urmare, este mai orientat către dezvoltatorii avansati. De multe ori, este posibil să doriți o alternativă mai simplă la PycURL. În această secțiune, vom discuta alternativele.

  26 de cele mai bune jocuri Tycoon pe Roblox

#1. Alte biblioteci

În afară de PycURL, Python are și alte biblioteci care pot fi folosite pentru a face cereri. Acestea includ biblioteca de solicitări și biblioteca urllib. Ambele sunt alternative populare și mai ușoare la pycURL.

#2. Alte limbi

cURL are interfețe implementate în alte limbi. Un site popular pentru conversia site-urilor cURL este Curl Converter. Cu cURL Converter, scrieți o comandă cURL pentru solicitarea pe care doriți să o faceți și vă convertește automat comanda în orice limbaj de programare ales. Puteți, de asemenea, să apelați comanda cURL direct în terminalul dvs. sau să scrieți un script Bash.

Concluzie

În acest articol, am introdus cURL și am explicat cum să-l folosești în Python folosind modulul PycURL. Am discutat, de asemenea, despre alternative la PycURL, cum ar fi modulul de solicitări și utilizarea diferitelor limbi pentru programele dvs.

Apoi, verificați utilizarea comenzii cURL cu exemple în timp real.