<div class="view-content">
<div class="views-row views-row-1">
<div class="views-field">
<span class="field-content">
<a href="link1">Name for link1
<img src="image1">
</a>
</span>
</div>
<div class="views-field-title">
<span class="field-content">
<a href="link1">
</a>
</span>
</div>
</div>
<div class="views-row views-row-2">
<div class="views-field">
<span class="field-content">
<a href="link2">Name for Link2
<img src="image2">
</a>
</span>
</div>
<div class="views-field-title">
<span class="field-content">
<a href="link2">
</a>
</span>
</div>
</div>
我使用node with request,cheerio来请求数据并相应地抓取。
我正在从link1和link2中寻找href,我让它为一个链接工作,但当我尝试循环它时,它没有向外扩展。
const data ={
link:"div.views-field > span > a"
},
pageData = {};
Object.keys(data).forEach(k => {
pageData[k] = $(data[k]).attr("href");});
console.log(pageData);
1条答案
按热度按时间qjp7pelc1#
您使用
$(data[k]).attr("href");
的方法是正确的,但是这里没有循环。应该有2个元素匹配这个选择器,但是您的代码只获取第一个。将其更改为
[...$(data[k])].map(e => $(e).attr("href"))
可以从所有匹配元素中获取href
属性。我并不热衷于将
pageData
作为全局变量,当map
看起来更合适的时候,使用forEach
,所以我的建议是: