home chevron_right src chevron_right search-gsmarena.js
code

search-gsmarena.js

JavaScript 1.74 KB 71 baris visibility 36 views
open_in_new
src/search-gsmarena.js
const axios = require('axios')

class GSMArenaSearch {
    constructor() {
        this.baseUrl = 'https://m.gsmarena.com/search-json.php3'

        this.headers = {
            'User-Agent': 'Mozilla/5.0',
            'Accept': 'application/json, text/plain, */*',
            'Referer': 'https://m.gsmarena.com/'
        }
    }

    async search(keyword) {
        try {
            const { data } = await axios.get(this.baseUrl, {
                headers: this.headers,
                params: {
                    sSearch: keyword
                }
            })

            const news = (data.news || []).map(item => ({
                title: item.text,
                url: `https://m.gsmarena.com/${item.href}`,
                thumbnail: item.src
            }))

            const reviews = (data.reviews || []).map(item => ({
                title: item.text,
                url: `https://m.gsmarena.com/${item.href}`,
                thumbnail: item.src
            }))

            return {
                success: true,
                keyword,
                total_news: news.length,
                total_reviews: reviews.length,
                news,
                reviews,
                scraped_at: new Date().toISOString()
            }

        } catch (error) {
            return {
                success: false,
                error: error.message,
                scraped_at: new Date().toISOString()
            }
        }
    }
}

async function main() {
    const keyword = process.argv[2] || 'Nubia'

    const gsmarena = new GSMArenaSearch()

    const result = await gsmarena.search(keyword)

    console.log(
        JSON.stringify(result, null, 2)
    )
}

module.exports = GSMArenaSearch

if (require.main === module) {
    main()
}
link

Direct URL

check Disalin!