【发布时间】:2021-08-12 11:37:45
【问题描述】:
我正在尝试通过为 majestic.com 创建一个网络爬虫来学习一些 javascript,这是他们的 api 页面,下面是我需要的表单。
https://developer-support.majestic.com/
这是我的代码
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.goto('https://developer-support.majestic.com/');
await page.click('#add-item-button')
await page.click('#add-item-button')
await page.type('#try-it-out-input' , 'my api key 987654321')
await page.select('select[name=item0]', '1234');
console.log('end');
})();
在提交任何内容之前,程序首先必须单击“添加更多项目”按钮两次,因为我需要发送 3 个 url,所以我总共将有 3 个输入字段(这部分有效)。然后我按 id 获取其中一个表单(请求 API 密钥的那个)并填写它,这也很好。
当我尝试用 url 填写 3 个表单时,我的问题就开始了。他们没有id,但他们有名字,比如item0、item1和item3,但我想不出选择它们的方法。我希望有人能指出错误在哪里。谢谢!
【问题讨论】:
-
您最后的
select电话看起来对我来说是正确的,可以通过名称进行选择(也许需要引用?)。只要确保您选择了正确的标签(在您链接的页面上,我没有看到任何名称为item0的选择,但我确实看到了名称为item0的<input>s。 -
谢谢!是的,lejlun 指出了同样的错误,但是我得到了一个错误:) UnhandledPromiseRejectionWarning: Error: Evaluation failed: Error: Element is not a
标签: javascript forms post puppeteer