ক্রোম হেডলেস পৃষ্ঠা লোড হওয়ার পরে এন সেকেন্ডের কোনও পৃষ্ঠার স্ক্রিনশট কীভাবে নেবেন?


16

আমি ক্রোম হেডলেস দিয়ে একটি পৃষ্ঠার স্ক্রিনশট তৈরি করতে চাই এবং আমরা স্ক্রিনশট নেওয়ার জন্য এবং ব্রাউজারের লোড সময়ের জন্য অপেক্ষা সীমাবদ্ধ করার জন্য --screenshotএবং --virtual-time-budgetসুইচ উভয়ই দেখেছি ।

পৃষ্ঠায় আমার কাছে এমন উপাদান রয়েছে যা ডমকন্টেন্টলয়েড রেন্ডার করার জন্য অপেক্ষা করে এবং আমরা সেগুলিও ক্যাপচার করতে চাই।

আমি স্ক্রিনশট নেওয়ার জন্য একটি উপায় খুঁজছি, বলুন, পৃষ্ঠাটি লোড হওয়ার 5 সেকেন্ড পরে , যখন এটি লোড বোঝা যায় তখন ডান পরিবর্তে।

আমরা আমাদের নোডজেএস অ্যাপ্লিকেশন থেকে ক্রোম হেডলেসকে কল করছি:

cp.spawnSync("google-chrome-beta", ["--headless", "--disable-gpu", "--screenshot", "--profile-directory=Default", "--window-size=1920,6200", "--virtual-time-budget=25000", url]);

আমরা জানি যে এমন সম্ভাব্য এনপিএম গ্রন্থাগার রয়েছে যা কমান্ড লাইন সুইচগুলি ব্যবহার না করে নোড থেকে একটি এপিআই ব্যবহার করে এটি অর্জন করতে পারে তবে আমরা স্থায়িত্ব সম্পর্কে উদ্বিগ্ন (ক্রোম দল তাদের সমস্ত অভ্যন্তরীণ এপিআইগুলি নিয়মিত ভাঙতে পছন্দ করে)।

টি এল; ডিআর

স্ক্রিনশট নেওয়ার আগে পৃষ্ঠা লোডের কয়েক সেকেন্ড পরে ক্রোম হেডলেসকে অপেক্ষা করার উপায় কি আছে?


3
ডেভিড Schnurr যে আছে আপনি যা চান তা nodejs স্ক্রিপ্ট ভাগ এখানেnodejs index.js --url="http://www.eff.org" --delay=50005 সেকেন্ড বিলম্বের জন্য চালান ।
ভ্লাসটিমিল ওভেক

উত্তর:


6

আমি একই জিনিস খুঁজছিলাম। আমি যা পেয়েছি তা হ'ল গুগল পুতুল। https://github.com/GoogleChrome/puppeteer

এখানে প্রচুর উদাহরণ রয়েছে, তবে মূলত আপনি যা করতে পেরেছিলেন তা করতে পারেন।

const puppeteer = require('puppeteer');

function timeout(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
};

(async() => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.setViewport({width: 5960, height: 4209})
    await page.goto('http://stackoverflow.com', {waitUntil: 'networkidle'});
    await timeout(10000)
    await page.screenshot({path: 'example.png'});
    browser.close();

})();

মার্চ 2019:UnhandledPromiseRejectionWarning: Error: ERROR: "networkidle" option is no longer supported. Use "networkidle2" instead
4253wyerg4e

2

ভ্লাস্টিমিল ওভেক যেমন বলেছেন, ডেভিড শ্নুর মিডিয়ামের জন্য এই সঠিক উদ্দেশ্যে একটি নোডজেএস স্ক্রিপ্ট লিখেছেন এবং ভাগ করেছেন ।

স্ক্রিপ্টটি প্লাগ এবং প্লে হওয়া উচিত, কিছু নির্ভরতা বিয়োগ করা উচিত।

সেটআপটি হ'ল:

  1. গিট রিসোসিটোরি ক্লোন করুন।
    git clone https://github.com/schnerd/chrome-headless-screenshots.git
  2. নির্ভরতা ইনস্টল করুন:
    npm install chrome-remote-interface minimist
  3. স্ক্রিপ্ট চালান
    node index.js --url="/superuser/1209741/how-to-take-a-screenshot-of-a-page-n-seconds-after-page-is-loaded-with-chrome-he" --delay=4000
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.