如何使用 jQuery 在 Nightmare 中获取相同 class 的 href 链接
How to fetch href links of the same class in Nightmare with jQuery
我正在尝试使用 nightmare js 获取位于单独 div 中的所有 href links
以及相同的 class name
...这是我的代码如下...
var Nightmare = require('nightmare');
var vo = require('vo');
vo(function* () {
var nightmare = Nightmare();
var title = yield nightmare
.goto('https://example.com')
.type('input[name="q"]', 'search term')
.click('input[value="some title"]')
.evaluate(function () {
//return $('.myclass').find('a').attr('href');
$('.myclass').find('a').each(function() {
return $(this).attr('href');
});
});
console.log(title);
yield nightmare.end();
})(function (err, result) {
if (err) return console.log(err);
});
下面是我的div内容...
<div class="myclass"><a href="example1.com">ex1</a>
</div>
<div class="myclass"><a href="example2.com">ex2</a>
</div>
<div class="myclass"><a href="example3.com">ex3</a>
</div>
当我使用 return $('.myclass').find('a').attr('href');
时它可以获取一个 link 但每个函数都不起作用 (returns null
)..有什么解决这个问题的建议吗?
我认为您只需要使用 class 名称作为选择器,然后再使用 "a" 标签:
$(".myClass a").each(function() {
return $(this).attr("href");
});
这是一个working example
我不知道 nightmare.js
但如果你想将所有 href
收集到一个数组中,请这样做:
.evaluate(function () {
var hrefs = [];
$('.myclass').find('a').each(function() {
hrefs.push($(this).attr('href'));
});
console.log(hrefs);
//return hrefs
});
.evaluate(function () {
var arr = [];
$('div.myClass > a').each(function(i) {
arr.push($(this).prop('href'));
});
return arr;
});
我正在尝试使用 nightmare js 获取位于单独 div 中的所有 href links
以及相同的 class name
...这是我的代码如下...
var Nightmare = require('nightmare');
var vo = require('vo');
vo(function* () {
var nightmare = Nightmare();
var title = yield nightmare
.goto('https://example.com')
.type('input[name="q"]', 'search term')
.click('input[value="some title"]')
.evaluate(function () {
//return $('.myclass').find('a').attr('href');
$('.myclass').find('a').each(function() {
return $(this).attr('href');
});
});
console.log(title);
yield nightmare.end();
})(function (err, result) {
if (err) return console.log(err);
});
下面是我的div内容...
<div class="myclass"><a href="example1.com">ex1</a>
</div>
<div class="myclass"><a href="example2.com">ex2</a>
</div>
<div class="myclass"><a href="example3.com">ex3</a>
</div>
当我使用 return $('.myclass').find('a').attr('href');
时它可以获取一个 link 但每个函数都不起作用 (returns null
)..有什么解决这个问题的建议吗?
我认为您只需要使用 class 名称作为选择器,然后再使用 "a" 标签:
$(".myClass a").each(function() {
return $(this).attr("href");
});
这是一个working example
我不知道 nightmare.js
但如果你想将所有 href
收集到一个数组中,请这样做:
.evaluate(function () {
var hrefs = [];
$('.myclass').find('a').each(function() {
hrefs.push($(this).attr('href'));
});
console.log(hrefs);
//return hrefs
});
.evaluate(function () {
var arr = [];
$('div.myClass > a').each(function(i) {
arr.push($(this).prop('href'));
});
return arr;
});