Javascript 如何将CHEERIO.js用于此HTML? 巴福
我想访问HREF属性中的url。和SPAN中的文本—仅第一个列表项的文本 我所拥有的一切都是有效的,但我正在寻找更好的学习方式Javascript 如何将CHEERIO.js用于此HTML? 巴福,javascript,node.js,web-scraping,cheerio,Javascript,Node.js,Web Scraping,Cheerio,我想访问HREF属性中的url。和SPAN中的文本—仅第一个列表项的文本 我所拥有的一切都是有效的,但我正在寻找更好的学习方式 var url=$('div.A').children().children().children().children().children()[0].attribs.href var title=$('div.A').children().children().children().children().children()[0]。children[2]。child
var url=$('div.A').children().children().children().children().children()[0].attribs.href代码>
var title=$('div.A').children().children().children().children().children()[0]。children[2]。children[0]。数据代码>您希望使用更好的选择器字符串来针对感兴趣的元素和属性。确切地说,您的选择有多模糊或精确,需要权衡与DOM结构的耦合太过紧密,因此对HTML的一些不相关的更改意味着您的选择器不再匹配,或者使用了太模糊的选择器并匹配了超出您意图的更多内容
- 模糊:
'a'
(找到每个锚)
'.A'
(div class=“A”中的每个锚点)
- 推荐:
。(必须是列表的一部分)
- 疯狂特定:
'div.A section.B ul.list li A'
酷!谢谢抱歉,必须进行编辑列表中有多个项目,因此当选择“SPAN”时,它会打印出每个“SPAN”的文本。如何抓住第一个“a”下的第一个“SPAN”。将假定“div.A section.B ul.list li A span.text()”。。。但这会打印出所有的span项目。find('span')还获取所有span,而不仅仅是第一个span。您可以使用“:first child”伪类选择器或.first()
jQuery/Cheerio方法。啊,是的,.first()有效!“:first child”伪类选择器不起作用,研究告诉我,只有当目标实际上是第一个子,在本例中,“small”是“first child”时,它才会起作用。
<div class="A">
<section class="B" data-vr-zone="B">
<header class="C"> BarFoo</header>
<ul class="list">
<li data-vr-contentbox="">
<a href="http://www.foobar.com/.../html">
<small>BarBar</small>
<span>Foo Bar foobarbar FooFoo?</span>
</a>
</li>
<li data-vr-contentbox="">
<a href="http://www.foofoobar.com/.../html">
<small>BarBarBar</small>
<span>Foo foo FooFoo?</span>
</a>
</li>
var link = $('.A li a');
var href = link.attr('href');
var spanText = link.find('span').first().text();