Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

248
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda