El raspado de páginas web se puede hacer usando múltiples herramientas o usando diferentes marcos en Python. Hay una variedad de opciones disponibles para extraer datos de una página web, cada una de las cuales se adapta a diferentes necesidades.
Primero, comprendamos la diferencia entre web-scraping y web-crawling. El rastreo web se usa para indexar la información en la página usando bots también conocidos como rastreadores. Por otro lado, Web-scraping es una forma automatizada de extraer información/contenido utilizando bots también conocidos como Scrapers.
Veamos algunas de las herramientas de raspado web más utilizadas para Python3:
- Urllib2
- Peticiones
- HermosaSopa
- Lxml
- Selenium
- Sopa Mecánica
Entre todos los marcos/herramientas disponibles, solo urllib2
vienen preinstalados con Python. Por lo tanto, todas las demás herramientas deben instalarse, si es necesario. Analicemos todas estas herramientas en detalle.
- Urllib2:
Urllib2
es un módulo de python utilizado para obtener URL. Ofrece una interfaz muy simple, en forma de función urlopen, que es capaz de obtener URL utilizando diferentes protocolos como HTTP, FTP, etc.# Using urllib2 module
from
urllib.request
import
urlopen
print
(html.read())
Producción :
- Requests:
Requests
no viene preinstalado con Python. Requests permite enviar requests HTTP/1.1. Se pueden agregar encabezados, datos de formulario, archivos de varias partes y parámetros con diccionarios simples de Python y acceder a los datos de respuesta de la misma manera.Las requests de instalación se pueden hacer usando pip.
pip install requests
# Using requests module
import
requests
# get URL
print
(req.encoding)
print
(req.status_code)
print
(req.elapsed)
print
(req.url)
print
(req.history)
print
(req.headers[
'Content-Type'
])
Producción :
- BeautifulSoup:
Beautiful soup
es una biblioteca de análisis que puede utilizar diferentes analizadores. El analizador predeterminado de Beautiful Soup proviene de la biblioteca estándar de Python. Crea un árbol de análisis que se puede usar para extraer datos de HTML; un conjunto de herramientas para diseccionar un documento y extraer lo que necesita. Convierte automáticamente los documentos entrantes a Unicode y los documentos salientes a UTF-8.pip
se puede utilizar para instalar BeautifulSoup:pip install beautifulsoup4
# importing BeautifulSoup form
# bs4 module
from
bs4
import
BeautifulSoup
# importing requests
import
requests
# get URL
data
=
r.text
soup
=
BeautifulSoup(data)
for
link
in
soup.find_all(
'a'
):
print
(link.get(
'href'
))
Producción :
- Lxml:
Lxml
es una biblioteca de análisis HTML y XML de alto rendimiento y calidad de producción. Si el usuario necesita velocidad, elija Lxml. Lxml tiene muchos módulos y uno de los módulos esetree
, que es responsable de crear elementos y estructura usando estos elementos.Uno puede comenzar a usar lxml instalándolo como un paquete de python usando
pip
la herramienta:pip install lxml
# importing etree from lxml module
from
lxml
import
etree
root_elem
=
etree.Element(
'html'
)
etree.SubElement(root_elem,
'head'
)
etree.SubElement(root_elem,
'title'
)
etree.SubElement(root_elem,
'body'
)
print
(etree.tostring(root_elem, pretty_print
=
True
).decode(
"utf-8"
))
Producción :
- Selenium: algunos sitios web usan javascript para servir contenido. Por ejemplo, pueden esperar hasta que te desplaces hacia abajo en la página o hagas clic en un botón antes de cargar cierto contenido. Para estos sitios web, se necesita selenium. Selenium es una herramienta que automatiza los navegadores, también conocidos como web-drivers. También viene con enlaces de Python para controlarlo directamente desde su aplicación.
pip
El paquete se usa para instalar Selenium:pip install selenium
# importing webdriver from selenium module
from
selenium
import
webdriver
# path for chromedriver
path_to_chromedriver
=
'/Users/Admin/Desktop/chromedriver'
browser
=
webdriver.Chrome(executable_path
=
path_to_chromedriver)
browser.get(url)
Producción :
- MechanicalSoup:
MechanicalSoup
es una biblioteca de Python para automatizar la interacción con sitios web. Almacena y envía automáticamente cookies, sigue redireccionamientos y puede seguir enlaces y enviar formularios. No hace JavaScript.Uno puede usar el siguiente comando para instalar MechanicalSoup:
pip install MechanicalSoup
# importing mechanicalsoup
import
mechanicalsoup
browser
=
mechanicalsoup.StatefulBrowser()
print
(value)
value1
=
browser.get_url()
print
(value1)
value2
=
browser.follow_link(
"forms"
)
print
(value2)
value
=
browser.get_url()
print
(value)
- Scrapy:
Scrapy
es un marco de rastreo web colaborativo y de código abierto para extraer los datos necesarios de los sitios web. Originalmente fue diseñado para web scraping. Se puede usar para administrar requests, preservar sesiones de usuario, seguir redireccionamientos y manejar canalizaciones de salida.Hay 2 métodos para instalar scrapy:
- Usando pipa:
pip install scrapy
- Usando Anaconda: Primero instale Anaconda o Miniconda y luego use el siguiente comando para instalar scrapy:
conda install -c conda-forge scrapy
# importing scrapy module
import
scrapy
class
GeeksSpider(scrapy.Spider):
name
=
"geeks_spider"
# Parse function
def
parse(
self
, response):
SET_SELECTOR
=
'geeks'
for
geek
in
response.css(SET_SELECTOR):
pass
Use el siguiente comando para ejecutar un código scrapy:
scrapy runspider samplescapy.py
Producción :
- Usando pipa:
Los módulos discutidos anteriormente son los scrappers más utilizados para Python3. Aunque hay algunos más pero ya no compatibles con Python3 como Mechanize, Scrapemark.
Referencias :
- https://elitedatascience.com/python-web-scraping-libraries
- https://python.gotrained.com/python-web-scraping-libraries/
- http://blog.datahut.co/beginners-guide-to-web-scraping-with-python-lxml/
Publicación traducida automáticamente
Artículo escrito por rashi_garg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA