【发布时间】:2024-04-25 04:30:02
【问题描述】:
我是网络抓取的新手,在访问 HTML 和 CSS 代码时遇到了一些问题。
我想抓取以下网站的标题: https://www.leaseplan.com/nl-nl/privatelease/onze-autos/4662/
点击检查后,我发现
<h1 class="u-margin-bottom-none u-margin-bottom@tablet" data-e2e-id="carName"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Fiat 500 - Lounge Hybrid </font></font></h1>
我想取出:Fiat 500 - Lounge Hybrid 并将其放入 excel 文件中。
我用过:
async function getPageData(url, page) {
await page.goto(url);
const title = await page.$eval(
"h1, id=carName",
(title) => title.textContent
);
但是,我不断收到错误:
(node:6216) UnhandledPromiseRejectionWarning: Error: Evaluation failed: DOMException: Failed to execute 'querySelector' on 'Document': 'h1[class=u-margin-bottom-none u-margin-bottom@tablet] .carName' is not a valid selector.
at __puppeteer_evaluation_script__:1:33
它与“h1, id=carName”有关,但我不确定如何以我的 scaper 能够识别并取出 Fiat 500 - Lounge Hybrid 的方式编写它
【问题讨论】:
-
h1没有 idcarName,它有属性data-e2e-id -
至于语法错误问题 - 您需要在属性选择器中的值周围加上引号。
h1[class="u-margin-bottom-none u-margin-bottom@tablet"] -
@04FS 这似乎是刚刚生成的选择器
-
@Justinas 你是说 puppeteer 自己生成选择器,基于代码中甚至没有提到的属性?那么它至少可以做到正确,哈哈。
标签: html css web-scraping puppeteer