-
Notifications
You must be signed in to change notification settings - Fork 0
/
limited.js
67 lines (53 loc) · 2.21 KB
/
limited.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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
const puppeteer = require('puppeteer');
const fs = require('fs');
async function retrieveRestaurantUrls() {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://fr.tripadvisor.be/Restaurants-g188646-Charleroi_Hainaut_Province_Wallonia.html');
const pageUrls = await page.evaluate(() => {
const urlArray = Array.from(document.links).map((link) => link.href);
const uniqueUrlArray = [...new Set(urlArray)];
return uniqueUrlArray.filter((url) => url.startsWith('https://fr.tripadvisor.be/Restaurant_Review') && !url.endsWith('#REVIEWS'));
});
await browser.close();
return pageUrls;
}
async function applyExtractRestaurantInfo() {
const urls = await retrieveRestaurantUrls();
const output = [];
for (let i = 0; i < 5; i++) {
const url = urls[i];
const restaurantInfo = await extractRestaurantInfo(url);
output.push(restaurantInfo);
}
const currentDate = new Date();
const filename = currentDate.toISOString().replace(/[-:.]/g, '').slice(0, -5) + '.json';
const jsonString = JSON.stringify(output);
fs.writeFile(filename, jsonString, (err) => {
if (err) {
console.error('Error writing JSON file:', err);
} else {
console.log('JSON file saved:', filename);
}
});
}
async function extractRestaurantInfo(url) {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url);
// Extraction du nom du restaurant
await page.waitForSelector('h1[data-test-target="top-info-header"].HjBfq');
const restaurantNameElement = await page.$('h1[data-test-target="top-info-header"].HjBfq');
const restaurantName = await page.evaluate(element => element.textContent, restaurantNameElement);
// Extraction du numéro de téléphone
await page.waitForSelector('span.AYHFM a.BMQDV');
const phoneNumberElement = await page.$('span.AYHFM a.BMQDV');
const phoneNumber = await page.evaluate(element => element.textContent, phoneNumberElement);
await browser.close();
return {
name: restaurantName,
phone: phoneNumber
};
}
// Appel de la fonction applyExtractRestaurantInfo()
applyExtractRestaurantInfo();