2016-07-27 8 views
0

私はphantomjsのウェブページからリンクhrefとそのimg srcの要素のリストを取得しようとしています。 Webページの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

あなたはa.hrefで行ったようにあなたは、画像のsrc属性を抽出する必要があります

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

更新

私は反対のテストスクリプトを実行した答えの妥当性を確認するため、テストウェブページ。

Webページ:

<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"}] 

答えのはまだあなたのために働いていない場合は、あなた、私達にあなたのスクリプトを表示してください実際のWebページコード、スクリプトの実行結果、PhantomJSのバージョン - 間違っているものを見つけようとします。

+0

私はそれをしましたが、それでも動作しません。 –

+0

更新された回答をご覧ください。 – Vaviloff

関連する問題