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()
}
Direct URL
Disalin!