通过JavaScript查找类似层次结构的元素(用于web抓取)

通过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

例如,当我在下面选择一个p.item-title元素时,应该找到所有p.item-title元素(而不是通过类名)。另外,当我选择下面的一个表元素时,应该会找到所有类似的表。我需要这个来刮网

<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);
}

很抱歉我希望通过不使用类名来查找类似的元素。我编辑了我的问题以澄清这一点。编辑了我的答案@节奏