【发布时间】:2018-06-26 01:30:41
【问题描述】:
我正在使用 nightmare.js 进行网络抓取我正在尝试通过获取输入接收的值并将 id 添加到按钮中,如果按钮内的文本与输入匹配,则将 id 添加到按钮。
const Nightmare = require('nightmare')
const nightmare = Nightmare({ show: false })
const rp = require('request-promise');
const cheerio = require('cheerio');
var size = "9";
nightmare
.goto('https://www.flightclub.com/')
.type('#search', 'air jordan 1 shadow \u000d')
.wait(1000)
.click('.result-thumbnail')
.evaluate(() => {
var correctSize = document.getElementsByTagName('button');
for (var i = 0; i < correctSize.length; i++) {
if (correctSize[i].innerText.trim() === size) correctSize[i].id = 'thisone';
}
})
.click('button[id=thisone]')
.end()
.catch(error => {
console.error('Search failed:', error)
})
这不能正常工作,但是如果在比较中将大小替换为“9”,那么它可以正常工作。有没有其他方法可以解决这个问题,我们不能将 innerText 与变量进行比较是否有原因?
【问题讨论】:
-
input你在传递什么?您可以创建代码的 sn-p 吗?那会很容易调试吗? -
您确定
input已在范围内定义并且是您所期望的吗?显然,这段代码是不完整的,所以无论问题出在哪里,它都在缺失的地方。 -
什么是
correctSize?应该是button[i].innerText.trim()?如果你做一个sn-p会很棒。 -
我刚刚添加了完整的代码,希望对您有所帮助!
标签: javascript html node.js web-scraping nightmare