Phantomjs获取链接href及其子项

时间:2016-07-27 23:47:29

标签: javascript phantomjs

我试图从带有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正确,我无法得到“链接”,我不知道为什么。我该如何解决?

由于

1 个答案:

答案 0 :(得分:0)

您应该提取图片的src属性,就像使用a.href一样:

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的版本 - 我们将尝试找出&# 39;错了。