2014-07-14 78 views
0

我想用PhantomJS來抓取網站,我需要在網站上執行一些操作。我想爲此使用jQuery。我創建了以下代碼如何在PhantomJS中使用jQuery?

page.open(url, function (status) 
    { 
     if (status === "success") 
     { 
      page.injectJs('jquery-1.11.1.min.js'); 

      var links = page.evaluate(function() 
      { 
       $jq = window.jQuery; 
       $jq.noConflict(); 

       var links = []; 

       $jq('a').each(function() 
       { 

       }); 

       return links; 
      }); 

     } 
    }); 

有時它會崩潰。

TypeError: 'undefined' is not a function (evaluating 'jQuery('.some-div-one-the-scrapering-page')

大概jQuery已經在這個網站上使用了,這個版本與我的版本不同。我該如何解決它?我必須使用普通的JS嗎?

+0

錯誤消息似乎與您提供的代碼不符。沒有使用類選擇器。 –

+0

錯誤來自網站,我試圖抓取。我猜這個網站也是使用jQuery,並且在兩個不同版本的庫之間存在衝突。 –

+0

那麼你爲什麼要使用自己的版本? –

回答

0

要檢查網頁已有的jQuery,使用window.jQuery

if (!window.jQuery) { 
    // jQuery is not loaded 
    page.injectJs('jquery-1.11.1.min.js'); 
} 

這樣,如果該網頁已有jQuery的加載,你的腳本將不會嘗試再次加載它。否則,它將執行page.injectJs('jquery-1.11.1.min.js')

+0

不幸的是,這在PhantomJS中不起作用。 'window'和'page'存在於不同的上下文中。 – Vaviloff