对于网络抓取的新手来说,这应该是一项艰巨的任务,我会解释一下。首先,到达该位置的 xpath 可能是这样的:
'//td[@class="msg_footer" and contains(text(), "Unik")]'
现在您有了该标签(以及它包含的内容),但如果您检查它不包含您需要的数字,则该内容正在使用 javascript 动态加载,而 javascript 就是这个:
<script type="text/javascript"><!--
var ss_w='rādīt numuru';
document.write( '<scr'+'ipt id="contacts_js" src="/js/2015-10-27/37863/VHoBGkpqSV8bfwkdTX9AXEpZXCVDlASIQ1ZV3kK.js?t='+new Date()+'"></scr'+'ipt>' );
--></script>
可以从这个 xpath 的响应中得到:
'//script[contains(text(), "contacts_js")]/text()'
从该字符串中,您应该复制 src 中的 url,例如这个 url:
/js/2015-10-27/37863/VHoBGkpqSV8bfwkdTX9AXEpZXCVDlASIQ1ZV3kK.js?t=
并将当前日期添加到末尾,因为javascript 使用new Date() 创建它。然后你应该向那个 url 发出请求(添加以前的响应域),比如:
https://www.ss.lv/js/2015-10-27/37863/VHoBGkpqSV8bfwkdTX9AXEpZXCVDlASIQ1ZV3kK.js?t=Wed%20Oct%2028%202015%2020:56:42%20GMT-0500%20(PET)
检查日期是否为 urlencoded。它应该返回如下响应:
var PHONE_CNT=-1;var PHONE_CNT2=-1;var PHONE_CNT3=-1;var EMAIL_CNT=-1;var SHOW_CNT=22;var PH_c="";var PH_1=0;var PH_2=0;var PH_3=0;
pcc_id=0;PH_1=gpzd("JTg3aCU3QyU1QnolN0MlN0JYcWh6JTVCdCU5NSU4QyU5MnV4ayU5QXElN0IlOTQlNUNweiU5MGtvJTdCJThFJTVF","55937369");
您可以在其中检查SHOW_CNT 中的值是否是您想要的数字。
如果您想知道我是如何找出哪个请求和哪个脚本填充了该响应标记,那么我使用firebug 进行了,在涉及调用您的 URL 的所有响应中搜索SHOW_CNT,这指向我指定的请求,然后尝试检查谁在请求该请求。
希望对您有所帮助。