Cómo raspar un sitio web

El raspado web es una técnica de software para extraer información de sitios web. Esta técnica se centra principalmente en la transformación de datos no estructurados (formato HTML) en la web en datos estructurados.

Bibliotecas necesarias para el raspado web: –

Como sabemos, python es un lenguaje de programación de código abierto. Puede encontrar muchas bibliotecas para realizar una función. Por lo tanto, es necesario encontrar la mejor biblioteca para usar. Prefiero BeautifulSoup (biblioteca de Python), ya que es fácil e intuitivo para trabajar. Precisamente, usaré dos módulos de Python para raspar datos:

  • Urllib2: es un módulo de Python que se puede utilizar para recuperar URL. Define funciones y clases para ayudar con las acciones de URL (autenticación básica y de resumen, redirecciones, cookies, etc.).
  • BeautifulSoup: es una herramienta increíble para extraer información de una página web. Puede usarlo para extraer tablas, listas, párrafos y también puede poner filtros para extraer información de las páginas web. En este artículo, utilizaremos la última versión de BeautifulSoup 4.

Desguace de una página web con BeautifulSoup

Aquí, estoy raspando datos de una página de Wikipedia. Nuestro objetivo final es extraer la lista de capitales de territorios estatales y sindicales en India. Y algunos detalles básicos como el establecimiento, el antiguo capital y otros forman esta página de wikipedia. Aprendamos con este proyecto paso a paso:

  1. Importar bibliotecas necesarias:

# Importar la biblioteca utilizada para consultar un sitio web
importar urllib2
# especifique la url
wiki = “https://en.wikipedia.org/wiki/List_of_state_and_union_territory_capitals_in_India”
# Consulte el sitio web y devuelva el html a la variable ‘página’
página = urllib2.urlopen (wiki)
# Importa las funciones Beautiful Sopa para analizar los datos devueltos desde el sitio web
desde bs4 import BeautifulSoup
#Prese el html en la variable ‘página’ y guárdelo en formato Beautiful Soup
sopa = BeautifulSoup (página)

  1. Use la función “prettify” para ver la estructura anidada de la página HTML
    Arriba, puede ver esa estructura de las etiquetas HTML. Esto te ayudará a conocer las diferentes etiquetas disponibles y cómo puedes jugar con ellas para extraer información.
  2. Trabaja con etiquetas HTML
  3. sopa. : Devuelve el contenido entre la etiqueta de apertura y cierre, incluida la etiqueta. En [30]: soup.title Fuera [30]: Lista de capitales de territorios estatales y sindicales en India – Wikipedia, la enciclopedia libre
  4. soup. .string: Cadena de retorno dentro de la etiqueta dada En [38]: soup.title.string Fuera [38]: u’Lista de capitales de territorios estatales y sindicales en India – Wikipedia, la enciclopedia libre ‘
  5. Encuentre todos los enlaces dentro de las etiquetas de la página :: Sabemos que podemos etiquetar un enlace usando la etiqueta ““. Entonces, deberíamos ir con la opción soup.a y debería devolver los enlaces disponibles en la página web. Vamos a hacerlo. En [40]: soup.a Fuera [40]: Arriba, puede ver que solo tenemos una salida. Ahora para extraer todos los enlaces dentro de , usaremos ” find_all ().
    Arriba, muestra todos los enlaces, incluidos títulos, enlaces y otra información. Ahora para mostrar solo enlaces, necesitamos iterar sobre cada una etiqueta y luego devolver el enlace usando el atributo “href” con get .
  6. Encuentre la tabla correcta: a medida que buscamos una tabla para extraer información sobre las capitales estatales, primero debemos identificar la tabla correcta. Escribamos el comando para extraer información dentro de todas las etiquetas de la tabla . all_tables = soup.find_all (‘table’) Ahora para identificar la tabla correcta, usaremos el atributo “class” de la tabla y lo usaremos para filtrar la tabla correcta. En Chrome, puede verificar el nombre de la clase haciendo clic derecho en la tabla requerida de la página web -> Inspeccionar elemento -> Copiar el nombre de la clase O ir a través del resultado del comando anterior para encontrar el nombre de la clase de la tabla correcta. right_table = soup.find (‘table’, class _ = ‘wikitable sobleble plainrowheaders’) right_table Arriba, podemos identificar la tabla correcta.
  7. Extraiga la información en DataFrame: aquí, debemos iterar a través de cada fila (tr) y luego asignar cada elemento de tr (td) a una variable y agregarlo a una lista. Primero veamos la estructura HTML de la tabla (no voy a extraer información para el encabezado de la tabla )
    Arriba, puede notar que el segundo elemento de

    está dentro de la etiqueta

    no

    , por lo que debemos ocuparnos de esto. Ahora para acceder al valor de cada elemento, usaremos la opción “buscar (texto = Verdadero)” con cada elemento. Miremos el código:

#Generar listas
A = []
B = []
C = []
D = []
E = []
F = []
G = []
para fila en right_table.findAll (“tr”):
celdas = row.findAll (‘td’)
states = row.findAll (‘th’) # Para almacenar datos de la segunda columna
si len (celdas) == 6: #Solo extraer el cuerpo de la tabla sin encabezado
A.append (celdas [0] .find (texto = Verdadero))
B.append (indica [0] .find (texto = Verdadero))
C.append (celdas [1] .find (texto = Verdadero))
D.append (celdas [2] .find (texto = Verdadero))
E.append (celdas [3] .find (texto = Verdadero))
F.append (celdas [4] .find (texto = Verdadero))
G.append (celdas [5] .find (texto = Verdadero))
# importar pandas para convertir la lista a un marco de datos
importar pandas como pd
df = pd.DataFrame (A, columnas = [‘Número’])
df [‘Estado / UT’] = B
df [‘Admin_Capital’] = C
df [‘Legislative_Capital’] = D
df [‘Judiciary_Capital’] = E
df [‘Year_Capital’] = F
df [‘Former_Capital’] = G
df

Finalmente, tenemos datos en el marco de datos:

Lee mas…

El método más fácil es contratar un raspador de datos profesional para manejar el raspado por usted. No tiene que preocuparse por la codificación y puede raspar datos de varios sitios web y directorios como Yellowpages, Yelp, etc. a un precio económico.

Aquí se recomienda el servicio de raspado de datos si desea verificar, haga clic aquí .

Hay muchas herramientas y webcrawlers disponibles. Si usted es un técnico y puede codificar, puede comprar rastreadores web y raspar los sitios web.

Mira los enlaces a continuación

Guía para principiantes sobre Web Scraping en Python (usando BeautifulSoup)

10 herramientas de web scraping para extraer datos en línea

¡Espero eso ayude!