json QualificaçõesScrapperPersonal Virtual
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json QualificaçõesScrapperPersonal Virtual相关的知识,希望对你有一定的参考价值。
const puppeteer = require('puppeteer')
let scrape = async (user, pass) => {
const browser = await puppeteer.launch({
headless: false,
args: ['--no-sandbox', '--disable-setuid-sandbox']
})
// const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage()
await page.goto("https://play.google.com/store/apps/details?id=br.com.personalvirtual&showAllReviews=true");
await page.click('.XnFhVd span')
document.querySelectorAll('div[jscontroller=H6eOGe] div[jscontroller=LVJlx] span')[0].innerHTML;
await page.waitForNavigation()
// await page.click('#profile-nav-item');
// const btnComprarID = await page.evaluate(() => {
// return document.querySelector('.box_botao > a').getAttribute(data-id);
// });
await page.goto(
`https://www.kabum.com.br/cgi-local/site/carrinho/adicionar.cgi?codigo=${code}`
)
await page.goto(
'https://www.kabum.com.br/cgi-local/site/carrinho/carrinho.cgi'
)
let botaoMaisResenha = document.querySelectorAll('button.LkLjZd.ScJHi.OzU4dc');
botaoMaisResenha.forEach(item => {
item.click();
});
const qualificacao = await page.evaluate(() => {
let all = document.querySelectorAll('div[jscontroller=H6eOGe]');
let qualificacaoContainer = [];
let positivas = [];
let negativas = [];
[].forEach.call(all, function (item) {
if (item.querySelector('div > div:nth-child(2) div[aria-label *= Avaliado]')
.getAttribute('aria-label')
.match(/(4 de 5|5 de 5)/)) {
positivas.push({
name: `${
item.querySelector("div > div:nth-child(2) span").innerText
}`,
avaliacao: `${item
.querySelector(
"div > div:nth-child(2) div[aria-label *= Avaliado]"
)
.getAttribute("aria-label")}`,
img: `${item
.querySelector("div > div img")
.getAttribute("src")}`,
txt: `${
item
.querySelector("div[jscontroller = LVJlx] span")
.innerText.includes("Resenha")
? item.querySelector(
"div[jscontroller = LVJlx] span[jsname = fbQN7e]"
).innerText
: item.querySelector("div[jscontroller = LVJlx] span")
.innerText
}`
});
} else {
negativas.push({
name: `${item.querySelector('div > div:nth-child(2) span').innerText}`,
avaliacao: `${item.querySelector('div > div:nth-child(2) div[aria-label *= Avaliado]').getAttribute('aria-label')}`,
img: `${item.querySelector('div > div img').getAttribute('src')}`,
txt: `${
item
.querySelector("div[jscontroller = LVJlx] span")
.innerText.includes("Resenha")
? item.querySelector(
"div[jscontroller = LVJlx] span[jsname = fbQN7e]"
).innerText
: item.querySelector("div[jscontroller = LVJlx] span")
.innerText
}`
})
}
});
qualificacaoContainer = [{ positivas: [...positivas] }, { negativas: [...negativas] }];
return qualificacaoContainer;
})
console.log(frete)
await page.goto('https://www.kabum.com.br/cgi-local/site/caixa/pagamento.cgi')
await page.evaluate(() => {
document.querySelector('form[name="pagamento_boleto"] input[name="BOLETO"]')
.click()
})
await page.waitForNavigation();
await page.evaluate(() => {
return document.querySelector('span.confirmacao-negrito')
.click()
// document.querySelector('input[name="CONFIRMACAO"]').click();
})
// const form = await page.$('form[name="pagamento-boleto"]');
// await form.evaluate(form => form.submit());
// Pegar Link do Perfil
// const profileLink = await page.evaluate(() => {
// return document.querySelector('a.nav-settings__view-profile-link')
// .href
// });
// // await page.evaluate(() => {
// // document.querySelector('a.nav-settings__view-profile-link').click();
// // })
// await page.goto(profileLink)
// await page.waitForSelector('.pv-top-card-section__name')
// // Clicar Exibir Mais Resumo
// const resumeMany = await page.evaluate(() => {
// return document.querySelector('.pv-top-card-section__summary-toggle-button')
// });
// if (resumeMany) {
// await page.click('.pv-top-card-section__summary-toggle-button');
// };
// // Clicar Exibir Mais Jobs
// const moreJob = await page.evaluate(() => {
// return document.querySelector('#experience-section .pv-experience-section__see-more')
// });
// if (moreJob) {
// await page.click('#experience-section .pv-experience-section__see-more > button');
// await page.waitFor(3000);
// };
// // Clicar Exibir Mais Skills
// const moreSkils = await page.evaluate(() => {
// return document.querySelector('.pv-skill-categories-section button.pv-profile-section__card-action-bar')
// });
// if (moreSkils) {
// await page.click('.pv-skill-categories-section button.pv-profile-section__card-action-bar');
// await page.waitFor(3000);
// };
// // Clicar Exibir Mais Detalhes Jobs
// await Promise.all([
// page.evaluate(() => {
// let x = document.querySelectorAll('#experience-section .pv-entity__extra-details a.lt-line-clamp__more');
// x.forEach((el) => el.click())
// })
// ])
// .catch(e => console.log(e));
// await page.waitFor(5000)
// // Scrape
// const result = await page.evaluate(() => {
// NodeList.prototype.forEach = Array.prototype.forEach;
// const imgProfile = document.querySelector('button.profile-photo-edit__edit-btn > img')
// .src;
// const name = document.querySelector('.pv-top-card-section__name')
// .innerText || '';
// const job = document.querySelector('.pv-top-card-section__headline')
// .innerText || '';
// const city = document.querySelector('.pv-top-card-section__location')
// .innerText || '';
// const resume = (document.querySelector('.pv-top-card-section__summary-text')
// .innerText)
// .replace(/\n/g, '') || '';
// // Jobs
// const jobPositionsNoMore = document.querySelectorAll('#experience-section .pv-profile-section__section-info.section-info.pv-profile-section__section-info--has-no-more > li, #experience-section .pv-profile-section__section-info.section-info.pv-profile-section__section-info--has-no-more > div');
// const jobsPositionsMore = document.querySelectorAll('#experience-section .pv-profile-section__section-info.section-info.pv-profile-section__section-info--has-more > li, #experience-section .pv-profile-section__section-info.section-info.pv-profile-section__section-info--has-more > div');
// const jobsPositions = jobPositionsNoMore.length > 0 ? jobPositionsNoMore : jobsPositionsMore;
// let expecJobs = [];
// jobsPositions.forEach((expec) => {
// const position = expec.querySelector('.pv-entity__summary-info > h3')
// .innerText || '';
// const enterprise = expec.querySelector('.pv-entity__summary-info .pv-entity__secondary-title')
// .innerText || '';
// const data = expec.querySelector('.pv-entity__summary-info .pv-entity__date-range > span:last-child')
// .innerText || '';
// const range = expec.querySelector('.pv-entity__summary-info .pv-entity__bullet-item-v2')
// .innerText || '';
// const details = expec.querySelector('.pv-entity__extra-details > p') ? expec.querySelector('.pv-entity__extra-details > p')
// .innerText.replace(/Visualizar menos/g, '') : '';
// const template = {
// position: `${position}`,
// enterprise: `${enterprise}`,
// data: `${data}`,
// range: `${range}`,
// details: `${details.replace(/\n/g, '')}`
// }
// expecJobs.push(template)
// });
// // Educational
// let educationalSkills = [];
// const educationalItem = document.querySelectorAll('#education-section ul > li.pv-education-entity') || '';
// if (educationalItem) {
// educationalItem.forEach((item) => {
// const educationalEnterprise = item.querySelector('h3.pv-entity__school-name')
// .innerText;
// const educationalName = item.querySelector('.pv-entity__secondary-title > span.pv-entity__comma-item')
// .innerText;
// const educationalData = item.querySelector('.pv-entity__dates > span:last-child')
// .innerText;
// const educationalResume = (item.querySelector('.pv-entity__description')
// .innerText)
// .replace(/\n/g, '');
// const template = {
// educationalEnterprise: `${educationalEnterprise}`,
// educationalName: `${educationalName}`,
// educationalData: `${educationalData}`,
// educationalResume: `${educationalResume}`
// }
// educationalSkills.push(template)
// })
// }
// // Skills
// let skillsOpen = [];
// const skillsOpenEach = () => {
// document.querySelectorAll('ol.pv-skill-category-list__skills_list > li > div > p')
// .forEach((item) => skillsOpen.push(item.innerText))
// };
// skillsOpenEach();
// // Imagens de Trabalhos
// let imgJobs = [];
// const imgJobsEach = () => {
// document.querySelectorAll('a.pv-treasury-list-preview__treasury-item-link')
// .forEach((item) => {
// item.click();
// setTimeout(() => {
// imgJobs.push(document.querySelector('.pv-treasury-media-viewer img')
// .src);
// document.querySelector('#li-modal-container .button.close')
// .click();
// }, 3000);
// // imgJobs.push(item.style.backgroundImage.replace('url(','').replace(/["']/g, ""))
// })
// };
// imgJobsEach();
// let skillsTec = [];
// const cv = {
// imgProfile: `${imgProfile}`,
// name: `${name}`,
// job: `${job}`,
// city: `${city}`,
// resume: `${resume}`,
// jobs: { ...expecJobs },
// educational: { ...educationalSkills },
// skillsOpen: skillsOpen,
// imgJobs: imgJobs
// };
// return cv;
// });
browser.close()
// return result
}
scrape()
{
"name": "webscrapper",
"engines": {
"node": "8.10.0"
},
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node app.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.18.3",
"cheerio": "^0.22.0",
"express": "^4.16.3",
"puppeteer": "^0.12.0"
}
}
[
{
"positivas": [
{
"name": "Felipe Vieira",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/a-/AAuE7mDE0HGbEzRWXAHgTHh1vlqkkcZM8V397h-isxNTkg=w48-h48-n-rw",
"txt": "Ótima idéia"
},
{
"name": "Paula Oliveira",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/a-/AAuE7mAUr29L9tZ8Og80NYeW8wT1k_vDYqQ94oo7BJPqgw=w48-h48-n-rw",
"txt": "Esse foi o melhor aplicativo de treino e dieta que já baixei, estou super satisfeita. A interação com meu personal e a nutricionista é ótima. Aplicativo perfeito! Não vivo mais sem ele, os profissionais são super atenciosos e consegui resultados, os quais não havia conseguido anteriormente. Muito amor pelo Personal Virtual!!!"
},
{
"name": "renata santos",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/-H-OltZNC7Fo/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rdC9GzkTEbsweDBk58qOZ1qF671aQ/w48-h48-n-rw-mo/photo.jpg",
"txt": "adoro esses App foi uma boa escolha tenho o plano anual,não gostava das séries dos professores da academia,por isso assinei e não me arrependi recente me afastei da academia e o professor me mandou msg para saber Pq não estava treinando mais,e trocou meu treino para fazer em casa o treino é ótimo ele tira minhas dúvidas.só tenho a agradecer."
},
{
"name": "Patricia Sardinha",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/-kBixiN_Hyc4/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rdgEg5sTE_n1tLrw-ojpIIpT26z_w/w48-h48-n-rw-mo/photo.jpg",
"txt": "Melhor aplicativo da vida. Nunca costumo comentar e qualificar, mas esse app merece. Profissionais atenciosos, respondem super rápido e adéquam o treino e a dieta segundo as nossas necessidades e nao generalizado como em algumas academias. Se tivesse mil estrelas eu daria com toda certeza"
},
{
"name": "Re Alves",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/a-/AAuE7mAD1-eyfFNcGnLNm3VkbyIqyib9TAXi4wH7kgOeWg=w48-h48-n-rw",
"txt": "App maravilhoso estou usando a pouco mais de uma semana e amando tanto treino qto dieta de acordo com meus gostos e objetivos...melhor investimento e profissionais super atenciosos ❤"
},
{
"name": "Paula Oliveira",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/a-/AAuE7mAUr29L9tZ8Og80NYeW8wT1k_vDYqQ94oo7BJPqgw=w48-h48-n-rw",
"txt": "Esse foi o melhor aplicativo de treino e dieta que já baixei, estou super satisfeita. A interação com meu personal e a nutricionista é ótima. Aplicativo perfeito! Não vivo mais sem ele, os profissionais são super atenciosos e consegui resultados, os quais não havia conseguido anteriormente. Muito amor pelo Personal Virtual!!!"
},
{
"name": "renata santos",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/-H-OltZNC7Fo/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rdC9GzkTEbsweDBk58qOZ1qF671aQ/w48-h48-n-rw-mo/photo.jpg",
"txt": "adoro esses App foi uma boa escolha tenho o plano anual,não gostava das séries dos professores da academia,por isso assinei e não me arrependi recente me afastei da academia e o professor me mandou msg para saber Pq não estava treinando mais,e trocou meu treino para fazer em casa o treino é ótimo ele tira minhas dúvidas.só tenho a agradecer."
},
{
"name": "Patricia Sardinha",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/-kBixiN_Hyc4/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rdgEg5sTE_n1tLrw-ojpIIpT26z_w/w48-h48-n-rw-mo/photo.jpg",
"txt": "Melhor aplicativo da vida. Nunca costumo comentar e qualificar, mas esse app merece. Profissionais atenciosos, respondem super rápido e adéquam o treino e a dieta segundo as nossas necessidades e nao generalizado como em algumas academias. Se tivesse mil estrelas eu daria com toda certeza"
},
{
"name": "Re Alves",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/a-/AAuE7mAD1-eyfFNcGnLNm3VkbyIqyib9TAXi4wH7kgOeWg=w48-h48-n-rw",
"txt": "App maravilhoso estou usando a pouco mais de uma semana e amando tanto treino qto dieta de acordo com meus gostos e objetivos...melhor investimento e profissionais super atenciosos ❤"
},
{
"name": "Izabel B.",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/a-/AAuE7mBMxJ2d7rnQlW9yZjtNqbyg-zYkMZxo50a6hW0_GQ=w48-h48-n-rw",
"txt": "Tem sido maravilhoso. O app motiva muito, o personal é muito bom e além disso tem a nutricionista indicando os alimentos. Eu estava sem foco e treinando sem disciplina, mas agora consigo ir a semana toda. Amei. 5 estrelas é pouco. Parabéns aos desenvolvedores."
},
{
"name": "Leo Fauth",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/-P1HdQ71jnA8/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rfVhR5XWUvWfKRK7vRlHyn2cUHYDA/w48-h48-n-rw-mo/photo.jpg",
"txt": "por enquanto estou muito satisfeito com o atendimento do personal e nutricionista. creio que o app deveria ter algumas melhorias no desenvolvimento dos exercícios. exemplo: disponibilidade de audio com Contagem de tempo"
},
{
"name": "Gabriela Torino",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/-GQwKsetxfdE/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3retWMF6SMDuXDGdr3u0P-4L2FUjqQ/w48-h48-n-rw-mo/photo.jpg",
"txt": "O app é ótimo. Meu esposo usa e gosta muito! Eu adquiri há alguns dias porém não darei continuidade pois estou com personal presencial. Enviei e-mail solicitando o cancelamento mas não obtive retorno. Como devo proceder? Obrigada!"
},
{
"name": "Paulo Jordao",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/a-/AAuE7mBSvF0F5ox3hMICgOtRDK7n-4-bVlOQyJJMI9NBwQ=w48-h48-n-rw",
"txt": "o aplicativo ta me ajudando muito na minha vida ,diria que esta facilitando ,com ele posso realmente chegar ao meu objetivo, pq eles sempre me auxiliam e sempre estao tirando minhas dúvidas"
},
{
"name": "Pedro Henrique Santana",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/a-/AAuE7mD6AnwBMLwOG_PBG-QOt5uplN7X-niCLXdLu9cH1g=w48-h48-n-rw",
"txt": "Estou usando alguns dias e estou gostando, está me ajudando a criar uma rotina e focar mais nos exercícios e na dieta. personal responde sempre com bastante rapidez! até o momento nenhum problema."
},
{
"name": "Alex Pedroso",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/a-/AAuE7mCZohVM6_6t_XjSeHCAPBWudEauF5mWO1OV1wa42A=w48-h48-n-rw",
"txt": "Eu receava se tratar de um app com resposta prontas e programadas. Me surpreendi positivamente. O personal é muito solícito, atende todas as dúvidas e os treinos são bem dinâmicos. Nossa mil!"
},
{
"name": "Um usuário do Google",
"avaliacao": "Avaliado com 5 de 5 estrelas",
"img": "https://lh3.googleusercontent.com/-ZUfUAd8PhHQ/AAAAAAAAAAI/AAAAAAAAAAA/lesR-m7lVq0/w48-h48-n-rw/photo.jpg",
"txt": "O app é sensacional: oferece treino personalizado e acompanhamento nutricional. Meu personal acompanha minha frequência de treinos, adequa-os para as minhas necessidades, troca sempre que necessário. A dieta da nutri é de acordo com minha rotina e meus hábitos. Ambos sempre solícitos, respondem dúvidas e estão a um clique de distância. O app oferece interface amigável e tudo que eu preciso para que meu treino seja bem executado. Uso há um ano e vou continuar usando.
以上是关于json QualificaçõesScrapperPersonal Virtual的主要内容,如果未能解决你的问题,请参考以下文章
markdown Validaçõesespeciais(关注)
markdown Incluirvalidaçõesnos模型