【发布时间】:2021-07-02 18:52:02
【问题描述】:
我正在尝试使用 puppeteer,我构建了一个简单的抓取工具,可以从 youtube 获取信息,它运行良好我试图添加的是在我的网页上显示带有 <p> 标签的抓取信息。有没有办法做到这一点?我被卡住的地方是我的name 和avatarUrl 变量作为局部变量在我的抓取函数中,所以我怎样才能获取这些值并将它们插入我的<p> 标记中。对于我尝试过的粗略草图,我做了: document.getElementById('nameId')=name; 在导入我的 js 脚本(在 HTML 端)之后,但这不起作用,因为name 是一个局部变量,它不能在范围之外访问。任何帮助表示赞赏。提前致谢
const puppeteer = require('puppeteer');
async function scrapeChannel(url) {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url);
const [el] = await page.$x('/html/body/ytd-app/div/ytd-page-manager/ytd-browse/div[3]/ytd-c4-tabbed-header-renderer/tp-yt-app-header-layout/div/tp-yt-app-header/div[2]/div[2]/div/div[1]/div/div[1]/ytd-channel-name/div/div/yt-formatted-string');
const text = await el.getProperty('textContent');
const name = await text.jsonValue();
const [el2] = await page.$x('//*[@id="img"]');
const src = await el2.getProperty('src');
const avatarURL = await src.jsonValue();
browser.close();
console.log({
name,
avatarlURL
})
return {
name,
avatarURL
}
}
scrapeChannel('https://www.youtube.com/channel/UCQOtt1RZbIbBqXhRa9-RB5g')
module.exports = {
scrapeChannel,
}
<body onload="scrapeChannel()">
<p id="nameId">'put the scraped name here'</p>
<p id="avatarUrlId">'put the scraped avatar url here'</p>
<!--
document.getElementById('nameId')=name;
document.getElementById('avatartUrlId')=avatarURL;
-->
</body>
【问题讨论】:
-
所以你想在你的前端显示报废的数据?如果您编写了路由器代码,请向我们展示您的路由器代码?
-
是的名称和头像 URL @ksa
-
你有设置路由吗?
-
抱歉我处理不了
-
不,我没有设置任何路线@ksa
标签: javascript html puppeteer