Web Scraping con Pyquery

19 0

Estamos en un momento en el cual tenemos datos en todos los lados donde miremos, tenemos datos abiertos de infinidad de APIS que muchas organizaciones ponen a disposición de los desarrolladores,sin embargo muchas veces no miramos una de las fuentes principales de datos que tenemos a nuestro alcance. La web.

Empresas de ciencias, de marketing, de negocios, traders, y todo mundo en este momento realizan robots o scrappers para obtener información de noticias, comportamiento de mercado, información de ciencia, etc.

Esto lo hacen a travez de diferentes tecnologías que les permiten extraer el HTML de los sitios y posteriormente analizarlos y «escarbar» datos entre tanto html para poder ordenar información, almacenarla en sus servidores propios y posteriormente analizarlos.

Python tiene diferentes librerías para realizar estas tareas, sin embargo hay uno en particular que me llama la atención por la manera sencilla que permite analizar el HTML que obtenemos de los sitios, algo muy similar a como lo maneja el gran y querido JQUERY mediante selectores. Esta librería llamada Pyquery

A acontinuación te dejo un ejemplo de cómo funciona Pyquery con dos ejemplos uno para consultar el valor del peso mexicano y otro para obtener artículos de tecnología de la BBC y almacenarlos en un archivo txt.

from pyquery import PyQuery as pq
import requests


# ejemplo consulta valor del peso mexicano
print("---- ejemplo de consulta de divisa ----")
jquery = pq(url="http://www.cambiodolar.mx/") #obtenemos todo el html y lo asignamos a la variable jquery
print(jquery('div.valor').text()) #imprime el texto del div que tiene la clase "valor"
print (jquery('p.day').text()) # imprime el texto de la etiqueta p que tiene la clase "day"

#obteniendo los aticulos de tecnología de la bbc español


print("--- ejemplo de consulta de articulos de tecnología de la BBC")
host = 'http://www.bbc.com'
jquery = pq(url="http://www.bbc.com/mundo/temas/tecnologia")
for elemento in jquery.items('a.hard-news-unit__headline-link'):
    archi = open('articulo_%s.txt'%(elemento.text().encode('utf-8')),'w')
    print('\n\n\n****** '+ elemento.text() +'*****')
    archi.write(elemento.text().encode('utf-8')+'\n\n')
    url_noticia = host+elemento.attr('href')
    noticia = pq(url=url_noticia)
    for p in noticia.items('.story-body__inner p'):
        archi.write(p.text().encode('utf-8')+'\n')
        print(p.text())
    archi.close()

Si pudiste probar los ejemplos cuéntanos qué te parecieron y qué ejemplos realizaste tú con esta gran librería. Hasta pronto

Deja una respuesta