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

138
Visualizações
Necesito ayuda para raspar la imagen de craigslist

He intentado todo lo que puedo pensar. Puedo obtener postUrl, fecha, título, precio y ubicación. Si va a https://sandiego.craigslist.org/search/sss?query=surfboards y pega el fragmento de código a continuación en la consola, obtendrá todas las imágenes. Pero cuando intento acceder a mi código, vuelve indefinido. ¡Cualquier ayuda en esto sería muy apreciada!

 $('#search-results > li').each((index, element) => { console.log( $(element).children().find('img').attr('src') ) })
 import axios from 'axios' import request from 'request-promise' import cheerio from 'cheerio' import express from 'express' import path from 'path' const __dirname = path.resolve(); const PORT = process.env.PORT || 8000; const app = express(); app.get('', (req, res) => { res.sendFile(__dirname + '/views/index.html') }); const surfboards = []; axios("https://sandiego.craigslist.org/search/sss?query=surfboards") .then(res => { const htmlData = res.data; const $ = cheerio.load(htmlData); $('#search-results > li').each((index, element) => { const postUrl = $(element).children('a').attr('href'); const date = $(element).children('.result-info').children('.result-date').text(); const title = $(element).children('.result-info').children('.result-heading').text().trim(); const price = $(element).children('.result-info').children('.result-meta').children('.result-price').text(); const location = $(element).children('.result-info').children('.result-meta').children(".result-hood").text().trim(); // Why is this not working?!?!?!?!?! const img = $(element).children().find('img').attr('src'); surfboards.push({ title, postUrl, date, price, location, img }) }) return surfboards }).catch(err => console.error(err)) app.get('/api/surfboards', (req, res) => { const usedboards = surfboards return res.status(200).json({ results: usedboards }) }) // Make App listen app.listen(PORT, () => console.log(`Server is listening to port ${PORT}`))
about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Parece que la página configura las imágenes con JavaScript. Por lo tanto axios obtiene el HTML sin enlaces reales a las imágenes.

Pero parece haber una solución aquí. Puede generar enlaces a imágenes concatenando https://images.craigslist.org y el valor de data-ids de a etiqueta principal.

ingrese la descripción de la imagen aquí

Puede obtener los data-ids esta manera:

 var data_ids = $(element).children('a').attr('data-ids')

luego divídalo en una matriz por coma, elimine los dos primeros 3: símbolos y concatene así:

 `${img_base_url}/${ids}_${resolution_and_extension}`

Pero si necesita obtener la URL solo para la primera imagen, entonces no es necesario crear una nueva matriz cada vez. Use una subcadena en su lugar (tenga en cuenta que a veces li no tiene ninguna imagen):

 if (data_ids && data_ids.includes(',')) { data_ids.substring(data_ids.indexOf('3:') + 2, data_ids.indexOf(',')) } else if (data_ids) { data_ids.substring(data_ids.indexOf('3:') + 2, data_ids.length) }
about 4 years ago · Santiago Trujillo 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