2013-04-04 77 views
0

我試圖抓取,如果我點擊「查看更多的產品」,它加載頁面的網站。我正在使用perl機械化。這是我從網站上獲得的內容。我應該在click_button()中指定什麼,以便點擊顯示更多產品按鈕?我應該點擊哪個按鈕?

<div id='lPage' style='display:none' class='lpge'>1</div> 
    <div class='clearfix'> 
    <div id='divMoreProducts' onclick='javascript:showMoreProductsAjax("All Products")' class='showMoreProd' style='display:none;'> 
     <span>Show more products</span> 
    </div> 
    <div id='divMoreProductsLoader' style='display:none;text-align:center'> 
     <img src='http://img2.babyoye.com/skin/frontend/default/babyoye_2012/images/ajax-more-loader.gif'> 
    </div> 
    </div> 
    <div id='botControl'> 
    <span style='float:right'><strong>Search result </strong>133</span> 
    </div> 
</article> 
<div id='lPage' style='display:none' class='lpge'>1</div> 
<script type="text/javascript">var enable_show_more_product = true;</script> 
<script type="text/javascript"> 
    jQuery(document).ready(function(){ 
    try { 
     jQuery("pre.loadme").lazyLoad(); 
    } catch(e) { 
    } 
    }); 
    jQuery(function() { 
    jQuery(".showMoreProd").mousedown(function(){ 
     jQuery(this).addClass("showMoreProdImp"); 
    }).mouseup(function() { 
     jQuery(this).removeClass("showMoreProdImp"); 
    }); 
    }); 
</script> 
</div> 

回答

3

它更容易點擊這個按鈕在您的瀏覽器,只是重複這樣的請求在您的代碼使用後作出檢查實際的HTTP請求:我使用

$mech->post(URL, Content => {...}); 

Firefox的HTTPFox擴展這樣的事情......

1

WWW ::機械化,因爲用戶手冊指出,未啓用JavaScript。你試圖點擊一個會觸發Ajax請求的按鈕,所以你不會從WWW :: Mechanize上點擊它來獲得任何結果。

在這樣的情況下,你需要首先分析了整個事情,想了解什麼樣的要求Ajax調用實際上做的事情。最簡單的方法是使用瀏覽器來檢查個別請求。就個人而言,我喜歡這樣的方式谷歌瀏覽器做的:

  1. 在Chrome中打開
  2. 按Ctrl頁面 - 轉移 - 我打開開發板
  3. 點擊「網絡」選項卡上的面板點擊面板底部的「XHR」按鈕。

現在,每次點擊一個可以發出Ajax請求的按鈕,您都會看到左邊每個請求的列表。如果你點擊其中任何一個,你可以看到確切的請求(標​​題,表單域,請求,響應,時間等)。

不是你看到的一切,需要有設置。通常,您只需找到包含觸發服務器的Ajax類型響應的命令的表單字段。其餘的一般是cookies和www :: Mechanize已經爲您處理的其他東西。

此外,每次發佈Ajax請求後,請不要忘記調用$mech->back(),以便當前所有表單字段都返回到託管這些按鈕的頁面的狀態。

HTH :-)

舊金山

+0

(請求行)\t POST /api/ajaxList.php?storeid=1&lazyloader=1&cat=48&cName=QmFieSBEaWFwZXJz&offer_special=0&crsl=0&example=0&p=2&dir=asc&order=流行的HTTP/1.1 主機\t www.example.com 用戶代理\t的Mozilla/5.0(Windows NT的5.1; RV:20.0; WUID = d007a10bb4a33e7e7ce0d628dc0e22e0; WTB = 2937)的Gecko/20100101火狐/ 20.0 接受\t */* 接受語言\t EN-US,EN; q = 0.5 接受編碼\t gzip的,放氣 內容類型\t應用程序/ x-WWW窗體-urlencoded; charset = UTF-8 X-Requested-With \t XMLHttpRequest Referer \t http://www.example.com/xyz。HTML 的Content-Length 連接\t保活 附註\t無緩存 – user2243481 2013-04-05 04:22:13