Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

244
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!