目標 ——從首頁抓取所有書名和價格,并以數(shù)組形式返回。這是我最終的輸出結(jié)果:
開始!看看您是否可以自己完成此任務。與我們剛創(chuàng)建的上述程序非常相似,如果卡住,請向下滾動…
GO! See if you can accomplish this on your own. It’s very similar to the above program we just created. Scroll down if you get stuck…
提示:
此挑戰(zhàn)與上一個示例之間的主要區(qū)別是需要遍歷大量結(jié)果。您可以按照以下方法設置代碼來做到這一點:
const result = await page.evaluate(() => {
let data = []; // 創(chuàng)建一個空數(shù)組
let elements = document.querySelectorAll('xxx'); // 選擇全部
// 遍歷每一個產(chǎn)品
// 選擇標題
// 選擇價格
data.push({title, price}); // 將數(shù)據(jù)放到數(shù)組里, 返回數(shù)據(jù);
// 返回數(shù)據(jù)數(shù)組
});
如果您不明白,沒事!這是一個棘手的問題…… 這是一種可能的解決方案。在以后的文章中,我將深入研究此代碼及其工作方式,我們還將介紹更高級的抓取技術(shù)。如果您想收到通知,請務必 在此處輸入您的電子郵件 。
方案:
const puppeteer = require('puppeteer');
let scrape = async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto('http://books.toscrape.com/');
const result = await page.evaluate(() => {
let data = []; // 創(chuàng)建一個空數(shù)組, 用來存儲數(shù)據(jù)
let elements = document.querySelectorAll('.product_pod'); // 選擇所有產(chǎn)品
for (var element of elements){ // 遍歷每個產(chǎn)品
let title = element.childNodes[5].innerText; // 選擇標題
let price = element.childNodes[7].children[0].innerText; // 選擇價格
data.push({title, price}); // 將對象放進數(shù)組 data
}
return data; // 返回數(shù)組 data
});
browser.close();
return result; // 返回數(shù)據(jù)
};
scrape().then((value) => {
console.log(value); // 成功!
});
結(jié)束語:
感謝您的閱讀!
原文地址:https://codeburst.io/a-guide-to-automati…
譯文地址:https://learnku.com/nodejs/t/44845
更多編程相關知識,可訪問:編程入門??!
更多關于云服務器,域名注冊,虛擬主機的問題,請訪問西部數(shù)碼官網(wǎng):m.ps-sw.cn