Я пытаюсь получить доступ к .contentWindow.document Iframe (в частности, к объявлению, размещаемому через google на странице).
Если вы выполните это в консоли через chrome, оно вернется, как и ожидалось.Например,
var t = document.getElementById('google_ads_iframe_175840252/90-min/Homepage/Index/Top_0').contentWindow.document;
window.onload=t
При выполнении этого через кукловода с хромом без головы, возвращается фанк Json с атрибутами для iframe.Например:
{ title:
{ location:
{ replace: {},
assign: {},
href: 'https://tpc.googlesyndication.com/safeframe/1-0-27/html/container.html',
ancestorOrigins: [Object],
origin: 'https://tpc.googlesyndication.com',
protocol: 'https:',
host: 'tpc.googlesyndication.com',
hostname: 'tpc.googlesyndication.com',
port: '',
pathname: '/safeframe/1-0-27/html/container.html',
search: '',
hash: '',
reload: {},
toString: {} },
closure_lm_292767: null,
'4CGeArbVQ': 100 } }
Я довольно новичок в кукловоде, любой совет полезен, я приведу свой код кукловода ниже.
const puppeteer = require('puppeteer');
let scrape = async () => {
const browser = await puppeteer.launch({
args: [
'--start-maximized','--disable-web-security',
],
headless: false,
//slowMo: 600,
userDataDir: 'test-profile-dir',
});
const page = await browser.newPage();
try {
await page.setViewport({width: 1920, height: 1080});
await page.setUserAgent('Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36');
await page.goto('https://www.90min.com/');
await page.waitFor(2000);
} catch(error) {
console.error(error);
}
try {
const result = await page.evaluate(() => {
let title = document.getElementById('google_ads_iframe_175840252/90-min/Homepage/Index/Top_0').contentWindow.document;
window.onload= title;
return {
title
}
});
browser.close();
return result;
} catch(error) {
console.error(error);
}
};
scrape().then((value) => {
console.log(value); // Success!
});