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 Funçõescomuns

markdown Validaçõesespeciais(关注)

markdown Incluirvalidaçõesnos模型

sh Redimensionarpartiçõeslinuxcentos

sql 配置alertasreceções

sql Alertas /reportsreceções