#javascript #loops #object #puppeteer
Вопрос:
Я пытаюсь создать скребок для кукольника. Он должен пройти по URL-адресам, хранящимся в объекте, и выполнить функцию следующим образом:
(async () => {const url = 'https://majestic.com/';
const browser = await puppeteer.launch({headless: true});
const page = await browser.newPage();
await page.setCookie(... cookies);
await page.goto('https://majestic.com/reports/site-explorer?q=' newDataDomains[2]['Domain'] 'amp;oq=' newDataDomains[2]['Domain'] 'amp;IndexDataSource=F');
const rootDomainTF = await page.evaluate(() => (document.querySelector("#trust_flow_chart > svg > g > g > text").textContent));
console.log('Root Domain TF = ' rootDomainTF);
};
Он переходит по URL-адресу, созданному с помощью URL-адреса из домена (в настоящее время только одного в качестве примера), и получает значение некоторого html.
Объект newDataDomains содержит около 100 элементов, похожих на
[
{ Domain: 'surfury.co.uk', 'Number of drops': 1 },
{ Domain: 'tal0ne.co.uk', 'Number of drops': 1 },
{ Domain: 'devonsfinest.co.uk', 'Number of drops': 2 }
]
Переменная количества капель также важна, на каждой итерации функция будет немного отличаться в зависимости от значения количества капель
Я написал код для того, что должно быть очищено, но теперь мне нужен способ сообщить программе: «просмотрите URL-адреса этого объекта, а также сохраните значение обоих свойств. Есть ли помощь в том, как это реализовать? Заранее спасибо
Комментарии:
1. Добро пожаловать в SO! Мне не ясно, какое количество капель используется в коде Кукольника, но есть ли проблема с использованием обычного цикла или
forEach
,for..of
и т. Д.?newDataDomains.forEach(e => { your puppeteer code })
? Вы бы использовалиe.Domain
иe["Number of drops"]
для доступа к свойствам определенной записи внутри цикла.2. Это работает само по себе, когда я пытаюсь просто вести журнал консоли, но, к сожалению, код кукольника этого не делает. imgur.com/URjEK47
3. Идея заключается в том, чтобы просто перейти в домен из объекта и захватить значение html, кода-марионетки, который я взял с их страницы разработки
Ответ №1:
Используйте цикл For для итерации по объекту и объявите два массива, один для URL-адреса, а другой для количества отбрасываний (именно так вы пройдете по объекту и сохраните его значения). и для доступа к значениям объектов используйте пример метода dot: objectName.url.