Mostra la pàginaRevisions anteriorsQuè hi enllaçaExporta a PDFTorna dalt Aquesta pàgina és només de lectura. Podeu veure'n el codi font, però no podeu canviar-la. Consulteu el vostre administrador si penseu que això és degut a algun error. = Python PycURL /via: [[https://www.rapidseedbox.com/blog/python-curl]] * requests: [[info:cursos:pue:python-pcpp1:m4:1.6|]] == setup * PycURL es un intefaz python para interactuar con cURL (más completa/compleja que **requests**) * <code bash>sudo apt install libcurl4-openssl-dev libssl-dev</code> * <code python>pip install pycurl</code> == comandos básicos con requests * <code python># Basic Commands with Requests import requests get_response = requests.get('https://sampleurl.com') print(get_response.text) </code> * <code python># POST Request with Requests import requests payload = {'param': 'value'} post_response = requests.post('https://sampleurl.com', data=payload) print(post_response.text) </code> * <code python>import requests try: get_response = requests.get('https://example.com') get_response.raise_for_status() print(get_response.text) except requests.exceptions.HTTPError as http_err: print(f'HTTP error occurred: {http_err}') except Exception as err: print(f'Other error occurred: {err}') </code> == comandos básicos con pycurl * <code python># GET Request with PyURL from pycurl import Curl from io import BytesIO curl_obj = Curl() response_buffer = BytesIO() curl_obj.setopt(curl_obj.URL, 'https://sampleurl.com') curl_obj.setopt(curl_obj.WRITEDATA, response_buffer) curl_obj.perform() curl_obj.close() response_body = response_buffer.getvalue().decode('utf-8') print(response_body) </code> * <code python># POST Request with PycURL from pycurl import Curl from io import BytesIO from urllib.parse import urlencode curl_obj = Curl() response_buffer = BytesIO() payload = {'param': 'value'} encoded_payload = urlencode(payload) curl_obj.setopt(curl_obj.URL, 'https://sampleurl.com') curl_obj.setopt(curl_obj.POSTFIELDS, encoded_payload) curl_obj.setopt(curl_obj.WRITEDATA, response_buffer) curl_obj.perform() curl_obj.close() response_body = response_buffer.getvalue().decode('utf-8') print(response_body) </code> * <code python># Handling Responses with PycURL from pycurl import Curl from io import BytesIO curl_obj = Curl() response_buffer = BytesIO() curl_obj.setopt(curl_obj.URL, 'https://sampleurl.com') curl_obj.setopt(curl_obj.WRITEDATA, response_buffer) curl_obj.perform() http_code = curl_obj.getinfo(curl_obj.RESPONSE_CODE) curl_obj.close() if http_code == 200: print("Success:", response_buffer.getvalue().decode('utf-8')) else: print("Error:", http_code) </code> == comandos avanzados con requests * Enviando JSON:<code python>import requests payload = {'param': 'value'} post_response = requests.post('https://sampleurl.com', json=payload) print(post_response.text) </code> * Enviando cabeceras:<code python>import requests headers = { 'User-Agent': 'CustomUserAgent', 'Accept': 'application/json' } get_response = requests.get('https://sampleurl.com', headers=headers) print(get_response.text) </code> * Enviando fichero:<code python>import requests files = {'file': open('path/to/your/file.txt', 'rb')} post_response = requests.post('https://sampleurl.com/upload', files=files) print(post_response.text) </code> * Recibiendo fichero:<code python>import requests files = {'file': open('path/to/your/file.txt', 'rb')} post_response = requests.post('https://sampleurl.com/upload', files=files) print(post_response.text) </code> == comandos avanzados con pycurl * Enviando JSON:<code python>from pycurl import Curl from io import BytesIO import json curl_obj = Curl() response_buffer = BytesIO() payload = {'param': 'value'} postfields = json.dumps(payload) curl_obj.setopt(curl_obj.URL, 'https://sampleurl.com') curl_obj.setopt(curl_obj.POSTFIELDS, postfields) curl_obj.setopt(curl_obj.HTTPHEADER, ['Content-Type: application/json']) curl_obj.setopt(curl_obj.WRITEDATA, response_buffer) curl_obj.perform() curl_obj.close() response_body = response_buffer.getvalue().decode('utf-8') print(response_body) </code> * Enviando cabeceras:<code python>from pycurl import Curl from io import BytesIO curl_obj = Curl() response_buffer = BytesIO() curl_obj.setopt(curl_obj.URL, 'https://sampleurl.com') curl_obj.setopt(curl_obj.HTTPHEADER, ['User-Agent: CustomUserAgent', 'Accept: application/json']) curl_obj.setopt(curl_obj.WRITEDATA, response_buffer) curl_obj.perform() curl_obj.close() response_body = response_buffer.getvalue().decode('utf-8') print(response_body) </code> * Enviando fichero:<code python>from pycurl import Curl curl_obj = Curl() curl_obj.setopt(curl_obj.URL, 'https://sampleurl.com/upload') curl_obj.setopt(curl_obj.HTTPPOST, [('file', (curl_obj.FORM_FILE, 'path/to/your/file.txt'))]) curl_obj.perform() curl_obj.close() </code> * Recibiendo fichero:<code python>from pycurl import Curl from io import BytesIO curl_obj = Curl() response_buffer = BytesIO() curl_obj.setopt(curl_obj.URL, 'https://sampleurl.com/file.txt') curl_obj.setopt(curl_obj.WRITEDATA, response_buffer) curl_obj.perform() curl_obj.close() with open('downloaded_file.txt', 'wb') as f: f.write(response_buffer.getvalue()) </code> == varis * problemas con certificados: [[https://pypi.org/project/certifi/]] development/python/pycurl.txt Darrera modificació: 02/09/2024 02:18per mate