Untitled

 avatar
unknown
plain_text
2 years ago
1.7 kB
5
Indexable
const axios = require('axios');
const cheerio = require('cheerio');

const url = 'https://www.propertyguru.com.sg/agent/natalie-cheng-349325?market=residential&listing_type=rent#agent-listings';

const getSalesPropertyListings = async (req, res) => {
  try {
    const options = {
      headers: {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
      },
      proxy: {
        host: 'your-proxy-host',
        port: 'your-proxy-port',
        auth: {
          username: 'your-proxy-username',
          password: 'your-proxy-password',
        },
      },
    };
    const response = await axios.get(url, options);
    const html = response.data;
    const $ = cheerio.load(html);

    const activeListings = [];
    $('.listing-card').each((index, element) => {
      const listing = {};
      listing.title = $(element).find('.listing-description-title').text().trim();
      listing.address = $(element).find('.listing-description-address').text().trim();
      listing.price = $(element).find('.price').text().trim();
      listing.bedrooms = $(element).find('.bedroom').text().trim();
      listing.bathrooms = $(element).find('.bathroom').text().trim();
      activeListings.push(listing);
    });

    const output = activeListings.map(listing => {
      return `Title: ${listing.title}\nAddress: ${listing.address}\nPrice: ${listing.price}\nBedrooms: ${listing.bedrooms}\nBathrooms: ${listing.bathrooms}\n`;
    }).join('\n');

    res.send(output);
  } catch (error) {
    console.log(error);
  }
};

module.exports = {
  getSalesPropertyListings,
};
Editor is loading...