【发布时间】:2020-11-27 15:23:08
【问题描述】:
我正在尝试获取 div 标签中的属性,但我不知道如何获取 div 中的第一个孩子的属性。
我正在使用 puppeteer 进行网络抓取和使用节点。我正在尝试获取第一个孩子的自定义属性、数据代码、数据情绪以及其中的其他所有内容。在 HTML 示例中,我想要:
data-ticker="SPY" data-sentiment="bearish" data-flowid="777" data-premiumpaid="123" data-ordertype="BIG"
我想将“SPY,看跌,777、123、BIG”放入一个数组中。
一个修改后的网站 HTML 示例如下,子元素中有更多的 div,但我不想要那些:
<div class="data-body">
<div class="item bearflow " data-ticker="SPY" data-sentiment="bearish" data-flowid="777" data-premiumpaid="123" data-ordertype="BIG">
<div class="item bullflow " data-ticker="MSFT" data-sentiment="bullish" data-flowid="222" data-premiumpaid="321" data-ordertype="SMALL">
<div class="item bullflow " data-ticker="AMD" data-sentiment="bullish" data-flowid="555" data-premiumpaid="132" data-ordertype="BIG">
// more divs of the same format follow
>/div>
这是我尝试过的:
let flow = document.querySelector('#optionflow > div.data-body > div:nth-child(1)').innerText;
这进入了第一个孩子的元素,并给了我它的文本,对我没有帮助。
let flow = document.querySelector('#optionflow > div.data-body')[0];我什至不确定这是否有意义!
我是 JavaScript 的初学者,我浏览了 HTML DOM 方法,但没有得到或理解任何有用的东西。任何帮助表示赞赏!
【问题讨论】:
-
.querySelector()不返回列表,因此[0]没有多大意义,因为它总是返回undefined。看看.dataset属性 -
您不必使用
:nth-child,因为querySelector只选择第一个匹配元素。如果您想要所有元素并过滤掉特定元素,请使用querySelectorAll()
标签: javascript html jquery css node.js