Python solicita paginación
- ¿Qué es la paginación en Python?
- Paginación de Python con el botón Siguiente
- Paginación de Python sin el botón Siguiente
- Paginación de Python con desplazamiento infinito
- Paginación con el botón Cargar más
En este artículo, aprenderemos sobre la paginación y cómo podemos superar los problemas relacionados con la paginación en Python. Una vez que lleguemos al final de este artículo, podremos aprender sobre la paginación de Python y cómo podemos solucionar los problemas con ella.
¿Qué es la paginación en Python?
Al utilizar cualquier aplicación web, es de suma importancia que el contenido que se muestra no se limite y se ajuste a la fuerza a una sola página. Aún así, debe mostrarse en varias páginas, lo que puede ayudar a mejorar la experiencia del usuario.
Este proceso de distribuir contenido en varias páginas se llama paginación. Debe tenerse en cuenta que al implementar el concepto de paginación, consideraremos factores como el número total de páginas, el tipo de contenido, la representación categórica de los temas en discusión y el orden numérico seguido por las páginas.
Paginación de Python con el botón Siguiente
La paginación no siempre se limita a lo que ven los usuarios, es decir, el front-end de los sitios web, pero a veces también es de suma importancia paginar las API utilizadas en el back-end. Podemos usar varias API y módulos de Python para tratar los problemas de paginación.
Comenzaremos haciendo uso del módulo de solicitudes
. Además, utilizaremos BeautifulSoup4
si estamos interesados en localizar el contenido de una página web.
Además, utilizaremos la biblioteca lxml
para proporcionar un acceso conveniente a los módulos mencionados anteriormente.
Código de ejemplo:
pip install requests beautifulsoup4 lxml
La línea anterior nos ayudará a instalar el módulo solicitudes
a través de la biblioteca beautifulsoup4
.
import requests
from bs4 import BeautifulSoup
findurl = "http://books.toscrape.com/catalogue/category/books/fantasy_19/index.html"
getresponse = requests.get(findurl)
getsoup = BeautifulSoup(getresponse.text, "lxml")
footer_element = getsoup.select_one("li.current")
print(footer_element.text.strip())
Producción :
Page 1 of 3
El fragmento de código anterior nos ayudará a capturar el pie de página de la URL de la página web proporcionada en el código. Puede cambiar la URL según el requisito.
La biblioteca de solicitudes
envía una solicitud obtener
en la URL.
Para el objeto sopa
, estamos usando el Selector CSS. Por ejemplo, si queremos pasar a otro elemento, podemos introducir el nombre en sopa.select_one(name)
.
El código anterior era para páginas web que incluyen el siguiente botón para navegar. Aparte de este escenario, la paginación también se puede hacer sin el botón siguiente
para un sitio web que usa desplazamiento infinito
y cargar más botón
.
Nota: Obtenemos todos estos nombres de objetos que hemos usado en el código anterior presionando F12 en el sitio web deseado y luego examinando el marcado de los elementos requeridos. Por ejemplo:
Paginación de Python sin el botón Siguiente
Algunos sitios web, en lugar del botón siguiente, usan números como 1,2,3,4, etc., para desplazarse por las diferentes páginas. Esto hace que sea aún más fácil para un usuario navegar entre varias páginas.
En este caso, intentaremos recuperar datos de la primera página y luego navegar usando un bucle.
Código de ejemplo:
# Handling pages with the Next button
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
def process_pages():
get_url = "https://www.gosc.pl/doc/791526.Zaloz-zbroje"
response = requests.get(get_url)
soup = BeautifulSoup(response.text, "lxml")
page_link_el = soup.select(".pgr_nrs a")
# process the first page
for link_el in page_link_el:
link = urljoin(get_url, link_el.get("href"))
response = requests.get(link)
soup = BeautifulSoup(response.text, "lxml")
print(response.url)
# process remaining pages
if __name__ == "__main__":
process_pages()
Producción :
https://www.gosc.pl/doc/791526.Zaloz-zbroje/2
https://www.gosc.pl/doc/791526.Zaloz-zbroje/3
https://www.gosc.pl/doc/791526.Zaloz-zbroje/4
Paginación de Python con desplazamiento infinito
Como sugiere el nombre, en este tipo de paginación, no tenemos los siguientes botones o números de página, sino que seguimos desplazándonos para ver el contenido requerido.
Un ejemplo simple de dicha paginación puede ser cualquier sitio web de comercio electrónico. Se nos muestra una cierta cantidad de productos a la vez y, una vez que nos desplazamos hacia abajo, se nos muestran los siguientes productos.
Debe tenerse en cuenta que durante tales escenarios, no tenemos que lidiar con URL de varias páginas.
Una llamada asíncrona a la API nos ayudará a obtener más contenido a medida que avanzamos.
Paginación con el botón Cargar más
Este método de paginación se asemeja al método de desplazamiento infinito, pero solo difiere cuando estamos interesados en saber cómo pasaremos a la página siguiente.
En este caso, tenemos una cierta cantidad de solicitudes para completar que siguen disminuyendo cada vez que hacemos clic en el botón cargar más. Por ejemplo, el número total de imágenes en un sitio web es 500 y se muestran 30 imágenes a la vez.
Entonces, con cada clic en el botón Cargar más, se nos presentan las siguientes 30 imágenes, y el contador resta esas 30 del total de 500 imágenes. Consideremos el siguiente ejemplo para una mejor comprensión.
Código de ejemplo:
import requests
from bs4 import BeautifulSoup
url = "http://smarthistory.org/wp-json/smthstapi/v1/objects?tag=938&page={}"
null = 0
page_counter = 1
while True:
getresponse = requests.get(url.format(page_counter), headers=null)
data = getresponse.json()
# Process data
# ...
print(getresponse.url) # only for debug
if data.get("remaining") and int(data.get("remaining")) > 0:
page_counter += 1
else:
break
Producción :
https://smarthistory.org/wp-json/smthstapi/v1/objects?tag=938&page=1
https://smarthistory.org/wp-json/smthstapi/v1/objects?tag=938&page=2
https://smarthistory.org/wp-json/smthstapi/v1/objects?tag=938&page=3
https://smarthistory.org/wp-json/smthstapi/v1/objects?tag=938&page=4
https://smarthistory.org/wp-json/smthstapi/v1/objects?tag=938&page=5
https://smarthistory.org/wp-json/smthstapi/v1/objects?tag=938&page=6
https://smarthistory.org/wp-json/smthstapi/v1/objects?tag=938&page=7
...
El código anterior continuará imprimiendo la misma URL e incrementando el número de página hasta que lleguemos al final de las páginas disponibles. Para el código anterior, el número total de páginas es 34.
Esperamos que este artículo le resulte útil para comprender el concepto de paginación en Python.
My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.
LinkedInArtículo relacionado - Python Requests
- Cadena de consulta con parámetros para solicitudes en Python
- Establecer agente de usuario usando solicitudes en Python
- Establecer reintentos máximos para solicitudes en Python
- Hacer una llamada API con token en Python
- Ignorar la verificación del certificado de seguridad SSL en las solicitudes de Python