通过JavaScript查找类似层次结构的元素(用于web抓取)
例如,当我在下面选择一个p.item-title元素时,应该找到所有p.item-title元素(而不是通过类名)。另外,当我选择下面的一个表元素时,应该会找到所有类似的表。我需要这个来刮网通过JavaScript查找类似层次结构的元素(用于web抓取),javascript,jquery,css,html,Javascript,Jquery,Css,Html,例如,当我在下面选择一个p.item-title元素时,应该找到所有p.item-title元素(而不是通过类名)。另外,当我选择下面的一个表元素时,应该会找到所有类似的表。我需要这个来刮网 <div> <div> <p class="item-title">...</p> <table>...</table> </div> </div> <div> <d
<div>
<div>
<p class="item-title">...</p>
<table>...</table>
</div>
</div>
<div>
<div>
<p class="item-title">...</p>
<table>...</table>
</div>
</div>
...
...
jQuery的兄弟()方法在概念上类似,但它在同一父节点下找到类似的元素。是否有任何方法或库可以从不同的父节点查找类似的元素?只需按所需的路径(层次结构)执行
querySelectorAll
:
var-allegments=document.querySelectorAll(“div>div>p”);
forEach(p=>console.log(p))代码>
文本1
...
文本2
...
试试这个:
jQuery.fn.addEvent = function(type, handler) {
this.bind(type, {'selector': this.selector}, handler);
};
$(document).ready(function() {
$('.item-title').addEvent('click', function(event) {
console.log(event.data.selector);
let elements = document.querySelectorAll(event.data.selector);
elements.forEach(e => console.log(e));
});
});
多亏了杰克,我才可以创作出一个运行脚本
// tags only selector (I need to improve depending on the use case)
function getSelector(element){
var tagNames = [];
while (element.parentNode){
tagNames.unshift(element.tagName);
element = element.parentNode;
}
return tagNames.join(" > ");
}
function getSimilarElements(element) {
return document.querySelectorAll(element);
}
很抱歉我希望通过不使用类名来查找类似的元素。我编辑了我的问题以澄清这一点。编辑了我的答案@节奏