Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

246
Vistas
Raspe el contenido web de la página cargada dinámicamente (desplazamiento infinito)

Estoy tratando de recopilar todos los nombres de archivos de imágenes de este sitio web: https://www.shipspotting.com/

Ya he recopilado un dict cat_dict de Python de todos los nombres de categoría y sus números de identificación. Entonces, mi estrategia es iterar a través de cada página de categoría, llamar a la API de carga de datos y guardar su respuesta para cada página.

He identificado https://www.shipspotting.com/ssapi/gallery-search como la URL de solicitud que carga la siguiente página de contenido. Sin embargo, cuando solicito esta URL con la biblioteca de solicitudes, obtengo un 404. ¿Qué debo hacer para obtener la respuesta correcta al cargar la siguiente página de contenido?

 import requests from bs4 import BeautifulSoup cat_page = 'https://www.shipspotting.com/photos/gallery?category=' for cat in cat_dict: cat_link = cat_page + str(cat_dict[cat]) headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:96.0) Gecko/20100101 Firefox/96.0", "Referer": cat_link } response = requests.get('https://www.shipspotting.com/ssapi/gallery-search', headers=headers) soup = BeautifulSoup(response.text, 'html.parser')

https://www.shipspotting.com/photos/gallery?category=169 es una página de ejemplo ( cat_link )

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Su url identificada contiene datos a través de la API como método de publicación y el desplazamiento infinito hace que las siguientes páginas signifiquen la paginación de los datos de carga útil de la API.

Código de trabajo junto con el estado 200

 import requests api_url= 'https://www.shipspotting.com/ssapi/gallery-search' headers={'content-type': 'application/json'} payload= {"category":"","perPage":12,"page":1} for payload['page'] in range(1,7): res=requests.post(api_url,headers=headers,json=payload) for item in res.json()['items']: title=item['title'] print(title)
about 4 years ago · Juan Pablo Isaza Denunciar

0

Cada vez que se desplaza hacia abajo en la página, se realiza una nueva solicitud al servidor (una POST, con cierta carga útil). Puede verificar esto en Herramientas de desarrollo, pestaña Red.

Los siguientes trabajos:

solicitudes de importación
de bs4 importar BeautifulSoup

### coloque el siguiente código en un bucle for basado en un número de páginas 
### [número total de fotos del barco]/[12], o asíncrono... tú eliges

datos = {"categoría":"","por página":12,"página":2} 
r = solicitudes.post('https://www.shipspotting.com/ssapi/gallery-search', datos = datos)
imprimir (r. json ())

Esto devuelve una respuesta json:

{'página': 1, 'elementos': [{'lid': 3444123, 'cid': 172, 'título': 'ELLBING II', 'imo_no': '0000000',....}
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda