2016-07-27 22 views
0

我試圖從phantomjs的網頁獲得鏈接href和他們img src的元素列表。網頁的Phantomjs獲取鏈接href和它的孩子

例子:

<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正確的,我不能讓 「鏈接」,我不知道爲什麼。我該如何解決它?

感謝

回答

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的版本是什麼 - 我們將嘗試找出問題所在。

+0

我做到了,它仍然無法正常工作。 –

+0

請參閱最新的答案。 – Vaviloff