Nano Hash - криптовалюты, майнинг, программирование

Не удается очистить следующую веб-страницу после нажатия

Я пытаюсь написать скрипт через phantomjs, чтобы очистить таблицу, разделенную на разные страницы (в настоящее время две, но в будущем их может быть больше или меньше) веб-сайта.

Мне удалось создать два вывода html с нужным мне содержимым, однако полученный результат всегда является первой таблицей, а не второй. Я попытался включить тайм-аут для ожидания загрузки страницы, но, похоже, это не работает. Я проверил нажатие следующей кнопки на консоли Chrome, и она работает. Не знаю, чего еще не хватает...

// Step 1: Open web page
var page = require('webpage').create();
var fs = require('fs');
function onPageReady() {
page.open('https://adb.taleo.net/careersection/1/jobsearch.ftl#');
phantom.waitFor(function() {return !page.loading;});

// Step 2: Scrape first table
var htmlContent = page.evaluate(function() {
    return document.documentElement.outerHTML;});
fs.write('C://MY_PATH' + '/outputadb.html', 
htmlContent,'w')

// Step 3: Click on button and wait for it to show
page.evaluate(function() { $("a#next").click(); });
phantom.waitFor(function() {
    return page.evaluate(function() {return $(".result-list- 
button").is(":visible");});
});
var htmlContent2 = page.evaluate(function() {
    return document.documentElement.outerHTML;});
fs.write('C://MY_PATH' + 
 '/outputadb2.html', htmlContent2,'w')
//console.log('READY!');
 phantom.exit();
}

phantom.waitFor = function(callback) {
  do {
   // Clear the event queue while waiting.
   // This can be accomplished using page.sendEvent()
   this.page.sendEvent('mousemove');
  } while (!callback());
 }

 onPageReady();

Следуя предложениям, я попытался использовать puppeteer. Однако здесь, ниже моей попытки, я получаю обещание объекта в качестве вывода вместо исходного кода html. Есть идеи, почему?

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

(async function main() {

try {
const browser = await puppeteer.launch({headless: true});
const page = await browser.newPage();
page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36')
await page.goto('https://adb.taleo.net/careersection/2/jobsearch.ftl#', { 
waitUntil: "networkidle2" });
await page.waitFor(1 * 1000);

const htmlContent =  page.evaluate(() => {
return document.documentElement.innerHTML})
body.innerHTML, bodyHandle);
console.log(htmlContent);
fs.writeFileSync("out.html", htmlContent);

await browser.close();
} catch (e) {
    console.log('our error',e)
}

})();

  • Возможно, вы захотите переключиться на puppeteer, в наши дни немногие отвечают на фантомные вопросы. 12.04.2019
  • @pguardiario спасибо за комментарий. Теперь я попытался реализовать кукольник, но, будучи новичком, я застрял в получении только объектного обещания в качестве вывода вместо html-кода. Есть идеи, почему? 13.04.2019

Ответы:


1

Что касается вашего кода кукловода: вам нужно await выполнить все операции, которые работают с кукловодом, т.е.

const htmlContent = await page.evaluate()
13.04.2019
  • Большой! Большое спасибо @Vaviloff 15.04.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..