в примере tr содержит два блока th и td
doc.querySelectorAll("tr").forEach((e,i)=>{
let th=e.querySelector("th");
let td=e.querySelector("td")
if (th && td){
console.log('наш вариант')
}
})
тоже самое, но без перебора можно сделать? еще в doc.querySelectorAll("tr .... ") отобрать сразу нужные, содержащие th и td