首页 > 解决方案 > 使用 Puppeteer 的 Node.JS Web 抓取失败并出现错误:'input[value type="email"' 不是有效的选择器

问题描述

基本上,我正在尝试登录此表单:

在此处输入图像描述

使用这个脚本:

const puppeteer = require('puppeteer')
const screenshot = 'carwow.png'

const scrape = async () => {
    const browser = await puppeteer.launch({headless:false});

    const page = await browser.newPage();

    await page.goto('https://dealers.carwow.co.uk/dealers/sign_in')

    await page.type('input type="email"', 'username')
    await page.type('input type="password"', 'password')
    await page.click('name="commit"')

    await page.waitForNavigation()
    await page.screenshot({ path: screenshot })
    browser.close()
    console.log('See screenshot: ' + screenshot)
};


scrape()


但是,它失败并出现以下错误:错误:评估失败:DOMException:无法在“文档”上执行“查询选择器”:“输入[值类型=“电子邮件””不是有效的选择器。

标签: javascriptnode.jsweb-scrapingpuppeteer

解决方案


我对 puppeteer 不是很熟悉,但它看起来像您尝试使用的 API,例如 page.type 记录在这里:https ://github.com/puppeteer/puppeteer/blob/v10.4.0/docs/api .md#pagetypeselector-text-options 它使用 CSS 选择器作为第一个参数进行测试。

特别是输入上的属性选择器,这是来自 W3 的简短文档: https ://www.w3schools.com/css/css_attribute_selectors.asp

您可能想尝试选择器

'input[type="email"]'

推荐阅读