-
Notifications
You must be signed in to change notification settings - Fork 0
/
wsEstanteVirtual.js
94 lines (59 loc) · 2.56 KB
/
wsEstanteVirtual.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
const puppeteer = require('puppeteer');
const fileSystem = require('fs');
const convertObjectToJsonFile = (fileName, listOfObects) =>{
const JSONString = JSON.stringify(listOfObects);
const folderName = 'files'
const path = `${folderName}/${fileName}.json`
console.log("Saving list of Book Stores in a JSON file...");
fileSystem.writeFile( path, JSONString,
(error) => {
if (error) console.log(err);
}
);
}
const addDateSuffixTofileName = (prefix) =>{
let stringDateSuffix = ''
const today = new Date();
const day = today.toLocaleString('en-US', {day: '2-digit'})
const month = today.toLocaleString('en-US', {month: 'short'})
const year = today.toLocaleString('en-US', {year: 'numeric'})
stringDateSuffix = prefix + day + "_" + month.toUpperCase() + "_" + year
return stringDateSuffix
}
const estanteVirtualBot = async() => {
const browser = await puppeteer.launch({headless: true});
const page = await browser.newPage();
await page.goto('https://www.estantevirtual.com.br/garimpepor/sebos-e-livreiros');
//await page.screenshot({ path: 'images/screenshot.png' });
console.log("Scraping Book Stores: Estante Vitual");
const bookStores = await page.evaluate(() => {
let listOfBookStores = [...document.querySelectorAll(".card.clearfix.js-sebo-item")]
let bookStore_EstanteVirtual = listOfBookStores.map((bookStore) => {
let [cityLocation, stateLocation] = bookStore.querySelector(".card-text.js-sebo-local").textContent.split(", ")
return {
link: bookStore.querySelector(".clearfix.card-link").href,
name: bookStore.querySelector(".card-title.sebo-nome.js-sebo-titulo").textContent,
location: {
city: cityLocation,
state: stateLocation
},
totalOfBooks: bookStore.querySelector(".js-sebo-acervo").textContent
}
})
return bookStore_EstanteVirtual
});
let fileName = 'EV_';
fileName = addDateSuffixTofileName(fileName);
convertObjectToJsonFile(fileName, bookStores);
await browser.close();
}
estanteVirtualBot();
/*
listaDeSebos = document.querySelectorAll(".card.clearfix.js-sebo-item")
linkParaSebo = .clearfix.card-link
nomeDoSebo = .card-title.sebo-nome.js-sebo-titulo
localizacaoSebo = .card-text.js-sebo-local
acervoSebo = .js-sebo-acervo
take the link href property: .href
- linkParaSebo = document.querySelectorAll(".clearfix.card-link").href
*/