Phantomjs获取链接href及其子项

Phantomjs Get link href and its childs

本文关键字:href 获取 链接 Phantomjs      更新时间:2023-09-26

我试图从一个带有phantomjs的网页中获取元素列表、链接href和它们的img src。

网页示例:

  <ul>
    <li>
      <a href="link A">
        <img src="link B"></img>
      </a>
   </li>
 </ul>

我试过了:

 var lis = page.evaluate(function() {
         var link_img = new Array;
         SrcAlt = [];
         var li = document.getElementsByTagName("li");
         for(q = 0; q < li.length; q++){
           var a = li[q].getElementsByTagName('a')[0];

            var link = a.getElementsByTagName("img")[0];

            SrcAlt.push({"img": a.href, "link": link.src});
    }
    return SrcAlt;
});

它只返回"img":a href正确,我无法获得"链接",我不知道为什么。我该怎么修?

感谢

应该像提取a.href:一样提取图像的src属性

SrcAlt.push({"img": a.href, "link": link.src});

更新

为了确认答案的有效性,我在一个测试网页上运行了一个测试脚本。

网页:

<html>
    <body>
        <ul>
            <li>
              <a href="http://google.com">
                <img src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"></img>
              </a>
           </li>
         </ul>    
    </body>
</html>

脚本:

var page = require('webpage').create();
page.open('http://localhost/phantomjs.php', function(status) {
    var lis = page.evaluate(function() {
        var link_img = SrcAlt = new Array;
        var li = document.getElementsByTagName("li");
        for(q = 0; q < li.length; q++){
            var a = li[q].getElementsByTagName('a')[0];
            var link = a.getElementsByTagName("img")[0];
            SrcAlt.push({"img": a.href, "link": link.src});
        }
        return (SrcAlt);
    });
    console.log(JSON.stringify(lis));
    phantom.exit();   
});

结果:

[{"img":"http://google.com/","link":"https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"}]

如果答案仍然不适用,请向我们展示您的脚本、您的实际网页代码、脚本运行的结果、PhantomJS的版本-我们会尽力找出问题所在。