无法创建适当的选择器来获取名称
Can't create appropriate selector to grab names
如何从以下元素中获取 "Followed by" 类别下的所有名称。名字的排列方式对我来说有点陌生,这就是为什么我不能得到所有的名字。我已经使用了一个能够获取第一个的选择器。但是,我希望所有名称都在 "Followed by" 标题下,直到 "edited_into" 标题。提前致谢。
这是一个 link 元素,其中所需的名称是:
https://www.dropbox.com/s/nzmvfc75szlgyyn/elements%20for%20expression.txt?dl=0
我试过的选择器:
a#followed_by+h4.li_group+div.odd a
我得到的结果只是名字:
Star Trek V: The Final Frontier
顺便说一句,我的唯一目的是使用此选择器解析名称而不是样式。
你的select几乎是正确的。
a#followed_by+h4.li_group ~ div.soda a
~
与 +
的工作方式不同,它会 select 在 selector 的第一部分之后的任何匹配元素,而 +
将仅紧跟在 selector 的第一部分之后的 select 个元素。
当然,"first part"我指的是a#followed_by+h4.li_group
。
我还更改了 selector 以查找 div.soda
而不是 div.odd
,因此您可以获得所有相关元素,而不仅仅是奇怪的元素。
由于 CSS select 或工作方式,我们无法请求 "only elements up until edited_into
"。但是,我们可以使用 JavaScript.
来解决这个问题
带有条件 break
的简单 for
循环将是最简单的方法。
var titles = [];
var items = document.querySelectorAll('a#followed_by+h4.li_group ~ div.soda a');
//firstEditedIntoItem represents the first element in
//the `edited_into` section. If it's null, then there
//is none, and we have nothing to worry about.
var firstEditedIntoItem =
document.querySelector
('a#edited_into+h4.li_group+div.soda a, a#spin_off_from+h4.li_group+div.soda a');
// Note: This selector will find the first instance that matches any of the
// specified sections. You could add another and replace `spin_off_from` with
// another section id.
for(var i=0; i<items.length; i++) {
var it = items[i];
//don't accept elements after 'edited_into'
// If firstEditedIntoItem is null, it will not match either.
if(it==firstEditedIntoItem) break;
titles.push(it.textContent);
}
console.info(titles.join('\n'));
如何从以下元素中获取 "Followed by" 类别下的所有名称。名字的排列方式对我来说有点陌生,这就是为什么我不能得到所有的名字。我已经使用了一个能够获取第一个的选择器。但是,我希望所有名称都在 "Followed by" 标题下,直到 "edited_into" 标题。提前致谢。
这是一个 link 元素,其中所需的名称是: https://www.dropbox.com/s/nzmvfc75szlgyyn/elements%20for%20expression.txt?dl=0
我试过的选择器:
a#followed_by+h4.li_group+div.odd a
我得到的结果只是名字:
Star Trek V: The Final Frontier
顺便说一句,我的唯一目的是使用此选择器解析名称而不是样式。
你的select几乎是正确的。
a#followed_by+h4.li_group ~ div.soda a
~
与 +
的工作方式不同,它会 select 在 selector 的第一部分之后的任何匹配元素,而 +
将仅紧跟在 selector 的第一部分之后的 select 个元素。
当然,"first part"我指的是a#followed_by+h4.li_group
。
我还更改了 selector 以查找 div.soda
而不是 div.odd
,因此您可以获得所有相关元素,而不仅仅是奇怪的元素。
由于 CSS select 或工作方式,我们无法请求 "only elements up until edited_into
"。但是,我们可以使用 JavaScript.
带有条件 break
的简单 for
循环将是最简单的方法。
var titles = [];
var items = document.querySelectorAll('a#followed_by+h4.li_group ~ div.soda a');
//firstEditedIntoItem represents the first element in
//the `edited_into` section. If it's null, then there
//is none, and we have nothing to worry about.
var firstEditedIntoItem =
document.querySelector
('a#edited_into+h4.li_group+div.soda a, a#spin_off_from+h4.li_group+div.soda a');
// Note: This selector will find the first instance that matches any of the
// specified sections. You could add another and replace `spin_off_from` with
// another section id.
for(var i=0; i<items.length; i++) {
var it = items[i];
//don't accept elements after 'edited_into'
// If firstEditedIntoItem is null, it will not match either.
if(it==firstEditedIntoItem) break;
titles.push(it.textContent);
}
console.info(titles.join('\n'));