【发布时间】:2019-05-24 19:28:03
【问题描述】:
我的爬虫只接收第一个类/类名实例,而不是页面上的其余部分
我尝试过使用普通的 for 循环而不是 for-each,我认为这是因为 div 有一个唯一的类名,该类名会增加一个设定值。我尝试在循环中增加它,但无济于事。
const puppeteer = require("puppeteer");
const siteUrl = "https://toronto.iabc.com/about/pic/pic-member-list/";
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.setViewport({ width: 1920, height: 926 });
await page.goto(siteUrl);
//getting details of member list
const siteData = await page.evaluate(() => {
const pageData = [];
//get page elements
const pageElms = document.querySelectorAll(
"body > div.site-container > div.site-inner > div > main > article"
);
let num = 3;
//parse data from elements
const scraper = pageElms.forEach(element => {
let nextPerson = (num += 2);
const pageJson = {};
try {
if (nextPerson > 50) {
return pageData;
}
pageJson.name = element.querySelector(
`body > div.site-container > div.site-inner > div > main > article > div > div:nth-child(${nextPerson}) > div:nth-child(1) > div`
).innerText;
scraper();
} catch (err) {
console.log(err);
}
pageData.push(pageJson);
console.log(pageData);
});
return pageData;
});
console.dir(siteData);
})();
最后,我应该能够通过一些调整来从这个列表中抓取每个人,以指定我想要抓取的选择器。
【问题讨论】:
-
文章标签只有一个
标签: javascript html node.js web-scraping