Нажмите на случайный результат поиска Google, используя NodeJS и Puppeteer? - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь сделать небольшой скрипт, чтобы щелкнуть по случайному результату поиска Google после поиска "'что есть' + Word". Ничто из того, что я сделал, не смогло дать мне желаемых результатов, черт, я даже не могу заставить скрипт щелкнуть один результат поиска Google!

Я попытался сделать несколько вещей здесь, например, собрать все результаты поиска в массив и щелкнуть случайный (не собрал в массив), щелкнув элемент по частичному тексту (https: // не принес результатов ) и многие другие решения, которые работают в Python, но не работают здесь.

const puppeteer = require('puppeteer');
const searchbar = "#tsf > div:nth-child(2) > div > div.RNNXgb > div >   div.a4bIc > input"



async function gsearch() {
const browser = await puppeteer.launch({headless:false, args:['--no-sandbox', '--disable-setuid-sandbox']});
const page = await browser.newPage();

await page.goto('https://google.com');
 var fs  = require("fs");
var array = fs.readFileSync("words.txt").toString().split('\n');
var random = array[Math.floor(Math.random() * array.length)]
await page.click(searchbar)
await page.keyboard.type("what is " + random);
await page.waitFor(1000);
await page.evaluate(() => {
  let elements = $('LC20lb').toArray();
  for (i = 0; i < elements.length; i++) {
    $(elements[i]).click();


  } 
 })
}

gsearch();

(игнорировать любые ошибки, связанные с отступом, клянусь, в VSC это выглядит чище)

Ожидается, что щелкнет случайный результат поиска. В конечном итоге ничего не делается, может быть, ошибка или два, но это все.

1 Ответ

0 голосов
/ 07 января 2019

LC20lb не является тегом html и должно быть именем класса для h3, а с помощью $() вы пытаетесь выбрать элементы с помощью jQuery? используйте document.querySelectorAll() вместо.

const puppeteer = require('puppeteer');
const fs = require("fs");

async function gsearch() {
  const browser = await puppeteer.launch({
    headless: false,
    args: ['--no-sandbox', '--disable-setuid-sandbox']
  });
  const page = await browser.newPage();

  await page.goto('https://google.com');
  var array = fs.readFileSync("words.txt").toString().split('\n');
  var random = array[Math.floor(Math.random() * array.length)];
  // simple selector for search box
  await page.click('[name=q]');
  await page.keyboard.type("what is " + random);
  // you forgot this
  await page.keyboard.press('Enter');
  // wait for search results
  await page.waitForSelector('h3.LC20lb', {timeout: 10000});
  await page.evaluate(() => {
    let elements = document.querySelectorAll('h3.LC20lb')
    // "for loop" will click all element not random
    let randomIndex = Math.floor(Math.random() * elements.length) + 1
    elements[randomIndex].click();
  })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...