-
Notifications
You must be signed in to change notification settings - Fork 1
/
scraperGOGL.js
38 lines (36 loc) · 1.54 KB
/
scraperGOGL.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function fetchGoogleNewsRSS(countryCode = 'US', languageCode = 'en') {
return new Promise((resolve, reject) => {
const url = `/news?countryCode=${countryCode}&languageCode=${languageCode}`;
fetch(url)
.then(response => {
if (!response.ok) {
throw new Error(`Failed to fetch news: ${response.statusText}`);
}
return response.text();
})
.then(xmlText => {
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlText, "text/xml");
const items = xmlDoc.querySelectorAll("item");
const newsItems = Array.from(items).map(item => ({
title: item.querySelector("title").textContent,
link: item.querySelector("link").textContent,
pubDate: item.querySelector("pubDate").textContent,
description: cleanDescription(item.querySelector("description").textContent)
}));
resolve(newsItems);
})
.catch(error => {
console.error(error);
reject(error);
});
});
}
function cleanDescription(description) {
const tempDiv = document.createElement('div');
tempDiv.innerHTML = description;
const links = tempDiv.querySelectorAll('a');
return Array.from(links).map(link => link.textContent).join(' | ');
}
// Make the function globally available
window.fetchGoogleNewsRSS = fetchGoogleNewsRSS;