development:python:pycurl

Python PycURL

  • PycURL es un intefaz python para interactuar con cURL (más completa/compleja que requests)
  • sudo apt install libcurl4-openssl-dev libssl-dev
  • pip install pycurl
  • # Basic Commands with Requests
     
    import requests
     
    get_response = requests.get('https://sampleurl.com')
    print(get_response.text)
  • # POST Request with Requests
     
    import requests
     
    payload = {'param': 'value'}
    post_response = requests.post('https://sampleurl.com', data=payload)
    print(post_response.text)
  • 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}')
  • # 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)
  • # 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)
  • # 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)
  • Enviando JSON:
    import requests
     
    payload = {'param': 'value'}
    post_response = requests.post('https://sampleurl.com', json=payload)
    print(post_response.text)
  • Enviando cabeceras:
    import requests
     
    headers = {
    'User-Agent': 'CustomUserAgent',
    'Accept': 'application/json'
    }
    get_response = requests.get('https://sampleurl.com', headers=headers)
    print(get_response.text)
  • Enviando fichero:
    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)
  • Recibiendo fichero:
    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)
  • Enviando JSON:
    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)
  • Enviando cabeceras:
    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)
  • Enviando fichero:
    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()
  • Recibiendo fichero:
    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())
  • development/python/pycurl.txt
  • Darrera modificació: 02/09/2024 02:18
  • per mate