2013-04-04 79 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