代码之家  ›  专栏  ›  技术社区  ›  Max Swapnil Kotwal

Phantom js从外部站点拾取元素

  •  0
  • Max Swapnil Kotwal  · 技术社区  · 8 年前

    我有一个Phantom JS脚本,它监视一些外部页面。基本上,它只是从以下页面获取状态(typescript代码):

    const status: string = await page.evaluate(function() {
          return document.getElementsByClassName("status-containing-element")[0].innerHTML;
    });
    

    在某些情况下,此元素可能不会显示在站点上,然后我的脚本假设站点当前不可用。问题是,如果 包含元素的状态 类名将被更改,我的脚本将始终认为,该网站是不可用的,直到我注意到,该类名被更改。作为一种解决方案,我尝试使用phantom拍摄页面截图,并检查其中的部分以确定页面状态,但这对我来说似乎是一种开销。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Yury Fedorov    8 年前

    除了类名之外,我建议使用 querySelector() 。通常类名可以更改,而常规页面结构保持不变。例如,考虑这样的情况:

    document.querySelector('#container > div > div > ul > li:nth-child(2) > span > a');
    

    还要注意,在代码中检索多个元素,然后获取第一个元素( [0] ),而 将返回单个项目。如果需要所有选择器,请使用 querySelectorAll() .