! # We can crawl for urls too url = ['http://crepesywaffles.com.co',] ! with codecs.open('crawled.log', 'a', 'utf-8') as outfile: for url in url_list: print 'Getting page %s ...' % url res = requests.get(url) if not res.ok: break doc = pq(res.content) images = doc('img') if not images: break for image in images: url = image.attrib.get('src') name = image.attrib.get('alt') img_file = download_file(url) obj, created = Entry.objects.get_or_create(name=name, image=File(img_file)) if created: outfile.write(url + '\n') print 'Done.' crawler.py Vamos a imaginar nuestro ‘crawler’ que utiliza urls y consigue las imágenes que allí se muestran. ! “Hipoteticamente” luciría como lo vemos aquí, pyquery es una librería que se instala por pypi y la podemos incluir así en nuestro proyecto, luego vamos a definir una lista de urls que quisiéramos analizar, esa lista puede ser estatica o podemos hacer un crawler para obtener las urls de forma automatica también, por lo pronto lo definimos manualmente a el home de la página de crepes y waffles. ! Luego vamos a abrir un archivo de log para llevar un registro del análisis que vamos a realizar, luego por cada url de nuestro listado de urls vamos a comenzar a obtener información. ! Utilizando la librería requests, también disponible desde pypi vamos a consultar la url con el método get, si la consulta no fue exitosa vamos a salirnos del ciclo, de lo contrario vamos a enviar el resultado de la consulta, básicamente el contenido html a pyquery el cual nos crea un objeto, llamado doc, al cual podemos hacer consultas con selectores como los utilizados en jquery para obtener elementos html que podemos utilizar en python, en este caso estamos utilizando el selector general ‘img’ para que nos traiga todos los elementos html creados con el tag ‘img’ eso lo estamos almacenando en la variable images, si no hay imágenes nos salimos del ciclo, pero si hay vamos a ir por cada una de ellas y vamos a obtener los atributos del origen de la imagen y el nombre, con esa información vamos a llamar a nuestro metodo download_file al cual enviamos la url, y en un momento veremos en detalle, el