gpt4 book ai didi

javascript - 尝试使用 Puppeteer 抓取外部站点时出错

转载 作者:行者123 更新时间:2023-11-30 13:53:00 25 4
gpt4 key购买 nike

我正在尝试抓取外部职位发布板并获取每个职位发布的数据。现在我只是想收集职位发布列表中第一个职位发布的数据。我似乎无法让它停止对我说:

UnhandledPromiseRejectionWarning:错误:评估失败:TypeError:无法读取 null 的属性“textContent”

我没有经常使用 puppeteer,所以我可能只是有一个简单的语法问题我没有看到。我正在尝试抓取的数据地址:Canvas Job Postings

const puppeteer = require('puppeteer');
const fs = require('fs');

(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();


const oportunities = [];
const opportunity = {
title: '',
desc: '',
category: '',
reqName: '',
hours: '',
postingDate: '',
address: ''
};
await page.goto('https://recruiting2.ultipro.com/PUB1004PSCU/JobBoard/d433f5c3-37c8-4bcf-a3af-248a707c7d31/?q=&o=postedDateDesc');

const title = await page.evaluate(() => {
return document.querySelector('.opportunity .row .col-lg-20 h3 a').textContent
});

opportunity.title = title;

console.log(opportunity);

browser.close();
})();

最佳答案

问题

表达式document.querySelector('.opportunity .row .col-lg-20 h3 a')返回null,表示选择器没有找到任何元素.

很可能是这种情况,因为虽然 load 事件已被触发,但页面尚未构建完成。

解决方案

解决此问题的最简单方法是等待元素出现,然后再继续您的脚本。您可以使用 page.waitForSelector像这样:

await page.goto(/* ... */);

await page.waitForSelector('.opportunity .row .col-lg-20 h3 a');

// continue with the remaining script...

关于javascript - 尝试使用 Puppeteer 抓取外部站点时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57855095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com