Web Scraping con Python: una guía para principiantes

Publicado: 2016-10-10

En el mundo de Big Data, los servicios de Web Scraping o extracción de datos son los requisitos principales para Big Data Analytics. Extraer datos de la web se ha vuelto casi inevitable para que las empresas permanezcan en el negocio. La siguiente pregunta que surge es cómo hacer web scraping como principiante.

Python de raspado web

Los datos se pueden extraer o raspar de una fuente web utilizando varios métodos. Los sitios web populares como Google, Facebook o Twitter ofrecen API para ver y extraer los datos disponibles de manera estructurada. Esto evita el uso de otros métodos que pueden no ser los preferidos por el proveedor de la API. Sin embargo, la demanda de rastrear un sitio web surge cuando el sitio web no ofrece fácilmente la información. Python, un lenguaje de programación de código abierto, se usa a menudo para Web Scraping debido a su ecosistema simple y rico. Contiene una biblioteca llamada "BeautifulSoup" que lleva a cabo esta tarea. Echemos un vistazo más profundo al web scraping usando python.

Configuración de un entorno de Python:

Para llevar a cabo el web scraping con Python, primero deberá instalar el entorno Python, que le permite ejecutar código escrito en el lenguaje python. Las bibliotecas realizan el raspado de datos;

Beautiful Soup es una biblioteca de Python fácil de usar. Es una de las mejores herramientas para extraer información de una página web. Los profesionales pueden rastrear información de páginas web en forma de tablas, listas o párrafos. Urllib2 es otra biblioteca que se puede usar en combinación con la biblioteca BeautifulSoup para buscar páginas web. Se pueden agregar filtros para extraer información específica de las páginas web. Urllib2 es un módulo de Python que puede obtener URL.

Para MACOSX:

Para instalar las bibliotecas de Python en MAC OSX, los usuarios deben abrir una terminal win y escribir los siguientes comandos, un solo comando a la vez:

sudoeasy_install pip

pip instalar BeautifulSoup4

pip instalar lxml

Para usuarios de Windows 7 y 8:

Los usuarios de Windows 7 y 8 deben asegurarse de que el entorno de python se instale primero. Una vez que el entorno esté instalado, abra el símbolo del sistema y busque el camino al directorio raíz C:/, y escriba los siguientes comandos:

easy_install BeautifulSoup4

easy_installlxml

Una vez que las bibliotecas están instaladas, es hora de escribir un código de extracción de datos.

Ejecutando Python:

El raspado de datos debe realizarse para un objetivo distinto, como rastrear el stock actual de una tienda minorista. En primer lugar, se requiere un navegador web para navegar por el sitio web que contiene estos datos. Después de identificar la tabla, haga clic derecho en cualquier parte de ella y luego seleccione el elemento de inspección de la lista del menú desplegable. Esto hará que aparezca una ventana emergente en la parte inferior o lateral de la pantalla que muestra el código HTML del sitio web. Las clasificaciones aparecen en una tabla. Es posible que deba escanear los datos HTML hasta que encuentre la línea de código que resalta la tabla en la página web.

Python ofrece algunas otras alternativas para el raspado de HTML además de BeautifulSoup. Incluyen:

  • raspado
  • marca de raspado
  • Mecanizar

Web scraping convierte datos no estructurados de código HTML en forma de datos estructurados, como datos tabulares en una hoja de cálculo de Excel. El raspado web se puede hacer de muchas maneras, desde el uso de Google Docs hasta los lenguajes de programación. Para las personas que no tienen ningún conocimiento de programación o competencias técnicas, es posible adquirir datos web mediante el uso de servicios de raspado web que brindan datos listos para usar de los sitios web de su preferencia.

Etiquetas HTML:

Para realizar web scraping, los usuarios deben tener un conocimiento sólido de las etiquetas HTML. Puede ser de gran ayuda saber que los enlaces HTML se definen mediante la etiqueta de anclaje, es decir, la etiqueta <a>, “<a href=“https://…”>El enlace debe estar aquí </a>”. Una lista HTML comprende una lista <ul> (sin ordenar) y <ol> (ordenada). El elemento de la lista comienza con <li>.

Las tablas HTML se definen con <Table>, la fila como <tr> y las columnas se dividen en datos como <td>;

  • <!DOCTYPE html> : un documento HTML comienza con una declaración de tipo de documento
  • La parte principal del documento HTML en texto plano sin formato se define mediante las etiquetas <body> y </body>
  • Los encabezados en HTML se definen usando las etiquetas de encabezado de <h1> a <h5>
  • Los párrafos se definen con la etiqueta <p> en HTML
  • Un documento HTML completo está contenido entre <html> y </html>

Usando BeautifulSoup en el raspado:

Al raspar una página web con BeautifulSoup, la principal preocupación es identificar el objetivo final. Por ejemplo, si desea extraer una lista de una página web, se requiere un enfoque paso a paso:

  • El primer y más importante paso es importar las bibliotecas requeridas:

#importar la biblioteca utilizada para consultar un sitio web

importar urllib2

#especifique la url wiki = “https://”

#Consulte el sitio web y devuelva el html a la variable 'página'

página = urllib2.urlopen(wiki)

#importar las funciones de Beautiful Soup para analizar los datos devueltos desde el sitio web

de bs4 importar BeautifulSoup

#Analice el html en la variable 'página' y guárdelo en formato Beautiful Soup

sopa = BeautifulSoup(página)

  • Use la función "embellecer" para visualizar la estructura anidada de la página HTML
  • Trabajar con etiquetas de sopa:

Soup<tag> se usa para devolver contenido entre la apertura y el cierre de la etiqueta, incluida la etiqueta.

  1. En[30]:sopa.título

Out[30]:<title>Lista de presidentes en India hasta 2010 – Wikipedia, la enciclopedia libre</title>

  1. sopa.<etiqueta>.cadena: cadena de retorno dentro de la etiqueta dada
  2. En [38]:sopa.título.cadena
  3. Out[38]:u 'Lista de presidentes en India y Brasil hasta 2010 en India - Wikipedia, la enciclopedia libre'
  4. Encuentre todos los enlaces dentro de las etiquetas <a> de la página: etiquete un enlace usando la etiqueta "<a>". Por lo tanto, vaya con la opción sopa.a y debería devolver los enlaces disponibles en la página web. Vamos a hacerlo.
  5. En [40]:sopa.a

Salida[40]:<a id=”superior”></a>

  • Encuentre la tabla correcta:

Dado que se está buscando una tabla para obtener información sobre los presidentes de India y Brasil hasta 2010, es importante identificar primero la tabla correcta. Aquí hay un comando para rastrear la información incluida en todas las etiquetas de la tabla.

all_tables= sopa.find_all('tabla')

Identifique la tabla correcta utilizando el atributo "clase" de la tabla que necesita filtrar la tabla correcta. A partir de entonces, inspeccione el nombre de la clase haciendo clic derecho en la tabla requerida de la página web de la siguiente manera:

  1. Inspeccionar elemento
  2. Copie el nombre de la clase o busque el nombre de la clase de la tabla de la derecha en la salida del último comando.

right_table=sopa.find('table', class_='wikitable sortable plainrowheaders')

tabla_derecha

Así es como podemos identificar la tabla correcta.

  • Extraiga la información a DataFrame: es necesario iterar a través de cada fila (tr) y luego asignar cada elemento de tr (td) a una variable y agregarlo a una lista. Analicemos la estructura HTML de Table de la tabla. (extraer información para el encabezado de la tabla <th>)

Para acceder al valor de cada elemento, es necesario utilizar la opción "find(text=True)" con cada elemento. Finalmente, hay datos en el marco de datos.

Hay varias otras formas de rastrear datos usando "BeautifulSoup" que reducen los esfuerzos manuales para recopilar datos de las páginas web. El código escrito en BeautifulSoup se considera más robusto que las expresiones regulares. El método de raspado web que discutimos usa las bibliotecas "BeautifulSoup" y "urllib2" en Python. Esa fue una breve guía para principiantes para comenzar a usar Python para el web scraping.

Estén atentos a nuestro próximo artículo sobre cómo el web scraping afecta el crecimiento de sus ingresos.

¿Planea adquirir datos de la web para la ciencia de datos? Estamos aquí para ayudar. Háganos saber acerca de sus requisitos.