javascript如果类x包含z获取类y的链接

时间:2018-05-15 11:15:31

标签: javascript web-scraping applescript

我没有js专家,但需要在我的AppleScript中执行一些js。不知道这是否可行,因为html页面包含这个div类的几个实例。

  1. 如果嵌套div类" .product_card__title"包含"我的搜索词"
  2. 从嵌套类提取href 链接" .js-search-product-link"
  3. 来自主要分组,使用班级" .product_card"
  4. 这里接受的一个替代版本IN THIS THREAD

    我的Html:

    <div class="product_card powersearch__product_card">
         <a href="/shop/XYZ" class="js-search-product-link">
      <div class="product_card__image" style="background-image:url(https://image.jpg);"></div>
      <div class="product_card__title">SEARCH FOR THIS TITLE</div>
      <div class="product_card__meta">€14</div></a></div>
    

    到目前为止我所拥有的是:

    tell application "Safari"
    open location "https://teespring.com/search?q=rocker"
    delay 5
    
    set theLinks to (do JavaScript "Array.prototype.slice.call(document.querySelectorAll('.product_card')).map(function(d,i){var title = d.querySelector('.product_card__title'),link =  d.querySelector('a');if(title && link && /Rocker/gi.test(title.textContent)){return link.href}})")
    
    end tell
    
    return theLinks
    

1 个答案:

答案 0 :(得分:1)

将yourSearchTerm替换为您要在下面搜索的内容:

 Array.prototype.slice.call(document.querySelectorAll(".product_card"))
    .map(function(d,i){
        var title = d.querySelector(".product_card__title"),
            link =  d.querySelector("a");
        if(title && link && /yourSerchTerm/gi.test(title.textContent)){
            return link.href
        }
    })

对于所有类"product_card"的div,它会返回一个包含href s的数组,用于它可以找到的数组,否则undefined

FIDDLE: https://jsfiddle.net/ibowankenobi/gc6r2h3v/1/

当apple返回最后一个全局值时,它可能有助于更改设置theLinks变量的部分:

set theLinks to (do JavaScript "someGlobal = Array.prototype.slice.call(document.querySelectorAll('.product_card')).map(function(d,i){var title = d.querySelector('.product_card__title'),link =  d.querySelector('a');if(title && link && /Rocker/gi.test(title.textContent)){return link.href}})")