Leyendo de un CSV

Para leer datos de un archivo CSV con el módulo csv, debe crear un objeto Reader. Un objeto Reader le permite iterar sobre líneas en el archivo CSV. Ingrese lo siguiente en la shell interactiva, con example.csv en el directorio de trabajo actual:

1 2 3 4 5
>>> import csv
>>> exampleFile = open('example.csv')
>>> exampleReader = csv.reader(exampleFile)
>>> exampleData = list(exampleReader)
>>> exampleData

El módulo csv viene con Python, así que no hay que instalarlo.

Para leer los datos:

1 2 3 4 5 6 7 8 9 10
>>> exampleData[0][0]
'4/5/2015 13:34'
>>> exampleData[0][1]
'Apples'
>>> exampleData[0][2]
'73'
>>> exampleData[1][1]
'Cherries'
>>> exampleData[6][1]
'Strawberries'

Escribiendo en un .csv

1 2 3 4 5 6 7 8 9 10
>>> import csv
>>> outputFile = open('output.csv', 'w', newline='')
>>> outputWriter = csv.writer(outputFile)
>>> outputWriter.writerow(['spam', 'eggs', 'bacon', 'ham'])
   21
>>> outputWriter.writerow(['Hello, world!', 'eggs', 'bacon', 'ham'])
   32
>>> outputWriter.writerow([1, 2, 3.141592, 4])
   16
>>> outputFile.close()

Los argumentos 'delimiter' y 'lineterminator'

1 2 3 4 5 6 7 8 9 10
>>> import csv
>>> csvFile = open('example.tsv', 'w', newline='')
>>> csvWriter = csv.writer(csvFile, delimiter='\t', lineterminator='\n\n')
>>> csvWriter.writerow(['apples', 'oranges', 'grapes'])
   24
>>> csvWriter.writerow(['eggs', 'bacon', 'ham'])
   17
>>> csvWriter.writerow(['spam', 'spam', 'spam', 'spam', 'spam', 'spam'])
   32
>>> csvFile.close()

Esto produce un archivo llamado example.tsv con el siguiente contenido:

apples oranges grapes

eggs bacon ham spam spam spam spam spam spam

JSON y APIs

La notación de objetos de JavaScript (Javascript Object Notation) es una forma popular de formatear datos como una sola cadena legible por humanos. JSON es la forma nativa en que los programas JavaScript escriben sus estructuras de datos y, por lo general, se parece a lo que produciría la función pprint() de Python. No necesitas saber JavaScript para trabajar con datos con formato JSON. Aquí hay un ejemplo de datos formateados como JSON:

1 2 3
{"name": "Zophie", "isCat": true,
 "miceCaught": 0, "napsTaken": 37.5,
 "felineIQ": null}

Es útil saber JSON, ya que muchos sitios web ofrecen contenido JSON como una forma para que los programas interactúen con el sitio web. Esto se conoce como proporcionar una interfaz de programación de aplicaciones (API).

Acceder a una API es lo mismo que acceder a cualquier otra página web a través de una URL. La diferencia es que los datos devueltos por una API están formateados (con JSON, por ejemplo) para las máquinas; Las API no son fáciles de leer para las personas.

Muchos sitios web hacen que sus datos estén disponibles en formato JSON. Facebook, Twitter, Yahoo, Google, Tumblr, Wikipedia, Flickr, Data.gov, Reddit, IMDb, Rotten Tomatoes, LinkedIn y muchos otros sitios populares ofrecen API para que otros programas las utilicen.

Algunos de estos sitios requieren registro, que casi siempre es gratis. Deberá buscar la documentación de las URL que debe solicitar su programa para obtener los datos que desea, así como el formato general de las estructuras de datos JSON que se devuelven.

Esta documentación debe ser proporcionada por cualquier sitio que ofrezca la API; Si tienen una página de "Desarrolladores", busqua la documentación allí. Con las API, puede escribir programas que hagan lo siguiente:

  • Descarguen los datos sin procesar de los sitios web. (Acceder a las API suele ser más conveniente que descargar páginas web y analizar HTML con Beautiful Soup).
  • Descarguen automáticamente las nuevas publicaciones de una de sus cuentas de redes sociales y publíquelas en otra cuenta. Por ejemplo, puedes tomar tus publicaciones de Tumblr y publicarlas en Facebook.
  • Cree una "enciclopedia de películas" para su colección de películas personales extrayendo datos de IMDb, Rotten Tomatoes y Wikipedia y colocándolos en un solo archivo de texto en su computadora. Puede ver algunos ejemplos de API de JSON en los recursos en http://nostarch.com/automatestuff/.

El módulo JSON

El módulo json de Python maneja todos los detalles de la traducción entre una cadena con datos JSON y los valores de Python para las funciones json.loads() y json.dumps(). JSON no puede almacenar todo tipo de valor de Python. Puede contener valores de solo los siguientes tipos de datos: cadenas, enteros, flotantes, booleanos, listas, diccionarios y NoneType. JSON no puede representar objetos específicos de Python, como objetos de archivo, objetos CSV Reader o Writer, objetos Regex u objetos Selenium WebElement.

Leyendo un json con la función json.load()

1 2 3 4 5 6
>>> stringOfJsonData = '{"name": "Zophie", "isCat": true, "miceCaught": 0,
"felineIQ": null}'
>>> import json
>>> jsonDataAsPythonValue = json.loads(stringOfJsonData)
>>> jsonDataAsPythonValue
{'isCat': True, 'miceCaught': 0, 'name': 'Zophie', 'felineIQ': None}

Escribiendo un json con la función json.dumps()

1 2 3 4 5 6
>>> pythonValue = {'isCat': True, 'miceCaught': 0, 'name': 'Zophie',
'felineIQ': None}
>>> import json
>>> stringOfJsonData = json.dumps(pythonValue)
>>> stringOfJsonData
'{"isCat": true, "felineIQ": null, "miceCaught": 0, "name": "Zophie" }'

¿Cómo descargar nuestros subrayados de diigo usando Selenium?

# Logueo en diigo

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import getpass
import time

user = input('Usuario: ')
passwd = getpass.getpass('Contraseña: ')

browser = webdriver.Firefox()
browser.get('https://www.diigo.com/sign-in?referInfo=https%3A%2F%2Fwww.diigo.com')

try:
    elem_user = browser.find_element_by_name('Username')
    elem_user.send_keys('deleyva_catedu1')
    elem_pass = browser.find_element_by_name('password')
    elem_pass.send_keys(passwd)
    sign_in = browser.find_element_by_id('loginButton')
    sign_in.click()
    time.sleep(5)
    bulk_edit = browser.find_elements_by_class_name('text')[1]
    bulk_edit.click()
    time.sleep(2)
    select_item = browser.find_elements_by_class_name('BookmarkItem')

    for item in select_item:
        fuente = ActionChains(browser).move_to_element(item).click().perform()
        tres_puntos = browser.find_element_by_xpath('//*[@id="library"]/div[2]/div[2]/div[2]/div[1]/div/div/div[4]/div[6]/div/i')
        tres_puntos.click()
        time.sleep(1)
        export_csv = browser.find_elements_by_xpath('//*[@id="library"]/div[2]/div[2]/div[2]/div[1]/div/div/div[4]/div[6]/div/div/a[6]')
        time.sleep(2)
        export_csv[0].click()
        time.sleep(5)
        x = browser.find_element_by_class_name('close')
        x.click()

except:
    print('Was not able to find an element with that name.')

¿Como hacerlo vía api?

1 2
from requests.auth import HTTPBasicAuth
req = requests.get('https://secure.diigo.com/api/v2/bookmarks?key=51d13a158e9e78f6&user=deleyva&filter=all', auth=HTTPBasicAuth('deleyva', '**********'))

results matching ""

    No results matching ""