如果 href 包含特定文本的一部分,则抓取 text() 值

Scraping text() value if href contains a part of specific text

如果 href 包含 venue/,我正在尝试收集 a 中的文本,所以我尝试这样做:

var venue = $('.details > span > a:contains(href="venue/")');
sheet.getRange(3,17).setValue(venue.text().trim());

但是 returns 没有值,我应该如何检索这样的值?
由于站点不时更改元素的位置,因此我需要定义此包含。

预期结果:

Estadio Manuel Ferreira (Asunción)

地图示例:

<div class="details ">
       <a href="/matches/2021/08/12/">11/08/2021</a>

       <span class="divider"></span>

       <a href="/international/south-america/copa-libertadores/2021/quarter-finals/r61990/">CONMEBOL Libertadores</a>

       <span class="divider"></span>


         <span>KO</span>
         <span>
           19:15
         </span>
      <br>
         <span>Venue</span>
         <span>
              <a href="venue/">Estadio Manuel Ferreira (Asunción)</a></span>
     </div>

Link 到站点:
https://int.soccerway.com/matches/2021/08/12/south-america/copa-libertadores/club-olimpia/clube-de-regatas-de-flamengo/3579565/

问题似乎就在第一行,因为“地点”变量 return 不是您所期望的。

我建议您 select 通过获取您提供的 div 中类型 a 的最后一个元素并分配其 [=14= 的值来寻找您正在寻找的锚点] 属性到名为 venue 的变量。之后,检查 venue 变量是否等于 venue/。如果条件returns true,获取锚点的内部文本,将其分配给一个名为result的变量并记录它。

您可以使用以下代码使其工作:

let element = $('.details a').last()
let venue = element.attr('href');

if (venue === 'venue/') {
  let result = element.text()
  console.log(result) // this is the value you are looking for
}

已更新:

let elements = $('.details a')

elements.each((index, value) => {
    let href = $(value).attr('href')
    if (href === 'venue/') {
        console.log($(value).text())
    }
})