El web scraping, el proceso de extracción de datos de sitios web, se ha convertido en una técnica poderosa para recopilar información de la vasta extensión de Internet. En este tutorial, exploraremos varias bibliotecas y módulos de Python comúnmente utilizados para web scraping y profundizaremos en por qué Python 3 es la opción preferida para esta tarea.
Paquetes y herramientas esenciales para Python Web Scraping
La última versión de Pitón , ofrece un amplio conjunto de herramientas y bibliotecas diseñadas específicamente para web scraping, lo que hace que sea más fácil que nunca recuperar datos de la web de manera eficiente y efectiva.
matemáticas.aleatorio java
Tabla de contenidos
- Módulo de Solicitudes
- Biblioteca BeautifulSoup
- Selenio
- Lxml
- Módulo URLlib
- PyautoGUI
- Cronograma
- ¿Por qué Python Web Scraping?
Módulo de Solicitudes
La biblioteca de solicitudes se utiliza para realizar solicitudes HTTP a una URL específica y devuelve la respuesta. Las solicitudes de Python proporcionan funcionalidades integradas para gestionar tanto la solicitud como la respuesta.
pip install requests>
Ejemplo: hacer una solicitud
El módulo de solicitudes de Python tiene varios métodos integrados para realizar solicitudes HTTP a un URI específico mediante solicitudes GET, POST, PUT, PATCH o HEAD. Una solicitud HTTP está destinada a recuperar datos de un URI específico o enviar datos a un servidor. Funciona como un protocolo de solicitud-respuesta entre un cliente y un servidor. Aquí usaremos la solicitud GET. El OBTENER método se utiliza para recuperar información del servidor determinado utilizando un URI determinado. El método GET envía la información de usuario codificada adjunta a la solicitud de página.
Pitón
import requests # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # print content of request print(r.content)> Producción

Para obtener más información, consulte nuestra Tutorial de solicitudes de Python .
Biblioteca BeautifulSoup
Beautiful Soup proporciona algunos métodos simples y frases pitónicas para guiar, buscar y cambiar un árbol de análisis: un conjunto de herramientas para estudiar un documento y eliminar lo que necesita. No se necesita mucho código para documentar una aplicación.
Beautiful Soup convierte automáticamente los registros entrantes a Unicode y los formularios salientes a UTF-8. No es necesario pensar en codificaciones a menos que el documento no defina una codificación y Beautiful Soup no pueda detectar ninguna. Luego sólo tienes que elegir la codificación original. Beautiful Soup se encuentra encima de analizadores de Python famosos como LXML y HTML, lo que le permite probar diferentes estrategias de análisis o cambiar la velocidad por flexibilidad.
pip install beautifulsoup4>
Ejemplo
- Importación de bibliotecas: El código importa la biblioteca de solicitudes para realizar solicitudes HTTP y la clase BeautifulSoup de la biblioteca bs4 para analizar HTML.
- Realizar una solicitud GET: Envía una solicitud GET a 'https://www.techcodeview.com
- Comprobación del código de estado: Imprime el código de estado de la respuesta, normalmente 200 para el éxito.
- Analizando el HTML : El contenido HTML de la respuesta se analiza utilizando BeautifulSoup y se almacena en la variable sopa.
- Imprimir el HTML embellecido: Imprime la versión embellecida del contenido HTML analizado para facilitar su lectura y análisis.
import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') print(soup.prettify())> Producción

Encontrar elementos por clase
Ahora, nos gustaría extraer algunos datos útiles del contenido HTML. El objeto de sopa contiene todos los datos de la estructura anidada que podrían extraerse mediante programación. El sitio web que queremos eliminar contiene una gran cantidad de texto, así que ahora eliminemos todo ese contenido. Primero, inspeccionemos la página web que queremos eliminar.
En la imagen de arriba, podemos ver que todo el contenido de la página está bajo el div con contenido de entrada de clase. Usaremos la clase de búsqueda. Esta clase encontrará la etiqueta dada con el atributo dado. En nuestro caso, encontrará todos los div que tengan clase como contenido de entrada.
Podemos ver que el contenido de la página está debajo del
etiqueta. Ahora tenemos que encontrar todas las etiquetas p presentes en esta clase. Podemos usar elencuentra todos clase de BeautifulSoup.
Pitón import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') s = soup.find('div', class_='entry-content') content = s.find_all('p') print(content)> Producción:

Para obtener más información, consulte nuestra Python hermosa sopa .
Selenio
Selenium es un módulo de Python popular que se utiliza para automatizar navegadores web. Permite a los desarrolladores controlar los navegadores web mediante programación, permitiendo tareas como web scraping, pruebas automatizadas e interacción con aplicaciones web. Selenium es compatible con varios navegadores web, incluidos Chrome, Firefox, Safari y Edge, lo que lo convierte en una herramienta versátil para la automatización de navegadores.
Ejemplo 1: para Firefox
En este ejemplo específico, dirigimos el navegador a la página de búsqueda de Google con el parámetro de consulta geeksforgeeks. El navegador cargará esta página y luego podremos proceder a interactuar con ella mediante programación usando Selenium. Esta interacción podría implicar tareas como extraer resultados de búsqueda, hacer clic en enlaces o extraer contenido específico de la página.
Pitón # import webdriver from selenium import webdriver # create webdriver object driver = webdriver.Firefox() # get google.co.in driver.get('https://google.co.in / search?q = geeksforgeeks')> Producción

Ejemplo 2: para Chrome
- Importamos el módulo webdriver de la biblioteca Selenium.
- Especificamos la ruta al ejecutable del controlador web. Debe descargar el controlador apropiado para su navegador y proporcionar la ruta al mismo. En este ejemplo, utilizamos el controlador de Chrome.
- Creamos una nueva instancia del navegador web usando webdriver.Chrome() y pasamos la ruta al ejecutable del controlador Chrome como argumento.
- Navegamos a una página web llamando al método get() en el objeto del navegador y pasando la URL de la página web.
- Extraemos información de la página web utilizando varios métodos proporcionados por Selenium. En este ejemplo, recuperamos el título de la página utilizando el atributo de título del objeto del navegador.
- Finalmente, cerramos el navegador usando el método quit().
# importing necessary packages from selenium import webdriver from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager # for holding the resultant list element_list = [] for page in range(1, 3, 1): page_url = 'https://webscraper.io/test-sites/e-commerce/static/computers/laptops?page=' + str(page) driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get(page_url) title = driver.find_elements(By.CLASS_NAME, 'title') price = driver.find_elements(By.CLASS_NAME, 'price') description = driver.find_elements(By.CLASS_NAME, 'description') rating = driver.find_elements(By.CLASS_NAME, 'ratings') for i in range(len(title)): element_list.append([title[i].text, price[i].text, description[i].text, rating[i].text]) print(element_list) #closing the driver driver.close()>
Producción

Para obtener más información, consulte nuestra Selenio de pitón .
Lxml
El módulo lxml en Python es una poderosa biblioteca para procesar documentos XML y HTML. Proporciona capacidades de análisis XML y HTML de alto rendimiento junto con una API simple y Pythonic. lxml se usa ampliamente en el web scraping de Python debido a su velocidad, flexibilidad y facilidad de uso.
pip install lxml>
Ejemplo
A continuación se muestra un ejemplo sencillo que demuestra cómo utilizar el módulo lxml para el web scraping de Python:
- Importamos el módulo html de lxml junto con el módulo de solicitudes para enviar solicitudes HTTP.
- Definimos la URL del sitio web que queremos raspar.
- Enviamos una solicitud HTTP GET al sitio web utilizando la función request.get() y recuperamos el contenido HTML de la página.
- Analizamos el contenido HTML usando la función html.fromstring() de lxml, que devuelve un árbol de elementos HTML.
- Usamos expresiones XPath para extraer elementos específicos del árbol HTML. En este caso, estamos extrayendo el contenido de texto de todos los (ancla) elementos en la página.
- Repetimos los títulos de los enlaces extraídos y los imprimimos.
from lxml import html import requests # Define the URL of the website to scrape url = 'https://example.com' # Send an HTTP request to the website and retrieve the HTML content response = requests.get(url) # Parse the HTML content using lxml tree = html.fromstring(response.content) # Extract specific elements from the HTML tree using XPath # For example, let's extract the titles of all the links on the page link_titles = tree.xpath('//a/text()') # Print the extracted link titles for title in link_titles: print(title)> Producción
More information...>
Módulo URLlib
El módulo urllib en Python es una biblioteca integrada que proporciona funciones para trabajar con URL. Le permite interactuar con páginas web obteniendo URL (localizadores uniformes de recursos), abriendo y leyendo datos de ellas y realizando otras tareas relacionadas con URL, como codificación y análisis. Urllib es un paquete que recopila varios módulos para trabajar con URL, como por ejemplo:
- urllib.request para apertura y lectura.
- urllib.parse para analizar URL
- urllib.error para las excepciones planteadas
- urllib.robotparser para analizar archivos robot.txt
Si urllib no está presente en su entorno, ejecute el siguiente código para instalarlo.
pip install urllib3>
Ejemplo
A continuación se muestra un ejemplo sencillo que demuestra cómo utilizar el módulo urllib para recuperar el contenido de una página web:
- Definimos la URL de la página web que queremos recuperar.
- Usamos la función urllib.request.urlopen() para abrir la URL y obtener un objeto de respuesta.
- Leemos el contenido del objeto de respuesta usando el método read().
- Dado que el contenido se devuelve como bytes, lo decodificamos en una cadena usando el método decode() con codificación 'utf-8'.
- Finalmente, imprimimos el contenido HTML de la página web.
import urllib.request # URL of the web page to fetch url = 'https://www.example.com' try: # Open the URL and read its content response = urllib.request.urlopen(url) # Read the content of the response data = response.read() # Decode the data (if it's in bytes) to a string html_content = data.decode('utf-8') # Print the HTML content of the web page print(html_content) except Exception as e: print('Error fetching URL:', e)> Producción

PyautoGUI
El módulo pyautogui en Python es una biblioteca de automatización GUI multiplataforma que permite a los desarrolladores controlar el mouse y el teclado para automatizar tareas. Si bien no está diseñado específicamente para web scraping, se puede usar junto con otras bibliotecas de web scraping como Selenium para interactuar con páginas web que requieren la participación del usuario o simular acciones humanas.
pip3 install pyautogui>
Ejemplo
En este ejemplo, pyautogui se usa para desplazarse y tomar una captura de pantalla de la página de resultados de búsqueda obtenida al escribir una consulta en el campo de entrada de búsqueda y hacer clic en el botón de búsqueda usando Selenium.
Pitón import pyautogui # moves to (519,1060) in 1 sec pyautogui.moveTo(519, 1060, duration = 1) # simulates a click at the present # mouse position pyautogui.click() # moves to (1717,352) in 1 sec pyautogui.moveTo(1717, 352, duration = 1) # simulates a click at the present # mouse position pyautogui.click()>
Producción

Cronograma
El módulo de programación en Python es una biblioteca simple que le permite programar funciones de Python para que se ejecuten en intervalos específicos. Es particularmente útil en el web scraping en Python cuando necesita extraer datos regularmente de un sitio web en intervalos predefinidos, como cada hora, diario o semanal.
Ejemplo
- Importamos los módulos necesarios: horario, tiempo, solicitudes y BeautifulSoup del paquete bs4.
- Definimos una función scrape_data() que realiza la tarea de web scraping. Dentro de esta función, enviamos una solicitud GET a un sitio web (reemplace 'https://example.com' con la URL del sitio web que desea extraer), analizamos el contenido HTML usando BeautifulSoup, extraemos los datos deseados e imprimimos. .
- Programamos la función scrape_data() para que se ejecute cada hora usando Schedule.every().hour.do(scrape_data).
- Ingresamos a un bucle principal que verifica continuamente si hay tareas programadas pendientes usando Schedule.run_pending() y duerme durante 1 segundo entre iteraciones para evitar que el bucle consuma demasiada CPU.
import schedule import time def func(): print('Geeksforgeeks') schedule.every(1).minutes.do(func) while True: schedule.run_pending() time.sleep(1)> Producción

¿Por qué Python3 para Web Scraping?
La popularidad de Python para el web scraping se debe a varios factores:
- Facilidad de uso : La sintaxis limpia y legible de Python facilita la comprensión y la escritura de código, incluso para principiantes. Esta simplicidad acelera el proceso de desarrollo y reduce la curva de aprendizaje para las tareas de web scraping.
- Ecosistema rico : Python cuenta con un vasto ecosistema de bibliotecas y marcos diseñados para web scraping. Bibliotecas como BeautifulSoup, Scrapy y Requests simplifican el proceso de análisis de HTML, lo que facilita la extracción de datos.
- Versatilidad : Python es un lenguaje versátil que se puede utilizar para una amplia gama de tareas más allá del web scraping. Su flexibilidad permite a los desarrolladores integrar el web scraping sin problemas en proyectos más grandes, como análisis de datos, aprendizaje automático o desarrollo web.
- Soporte comunitario : Python tiene una comunidad grande y activa de desarrolladores que contribuyen a sus bibliotecas y brindan soporte a través de foros, tutoriales y documentación. Esta gran cantidad de recursos garantiza que los desarrolladores tengan acceso a asistencia y orientación a la hora de afrontar los desafíos del web scraping.