用curl抓取網頁書據,成績,課表都是用這種方法抓取的,但是抓取就不行了,報500錯誤
這是用httpwatch抓包工具抓取的頁面,cookie正確拿到
這是要抓取的介面,資料通過post傳輸
PHP代碼
報錯介面
回複討論(解決方案)
第一:帶上CURLOPT_REFERER試試,對方是不是有可能判斷了頁面來源
第二:對方的登陸頁是否有隱藏參數,如果有的話需要先訪問登陸頁擷取隱藏值再提交
第三:沒看見你什麼地方提交了登入的帳號和密碼,就是自己這邊POST過來的帳號和密碼
$url = "http://202.117.64.25/loginAction.do";
$fields = "dllx=dldl&zjh=201224080126&mm=201224080126";
這是提交賬戶和密碼!
CURLOPT_REFERER 要加什嗎?
找到兩個隱藏參數,但是貌似沒什麼用
第一:帶上CURLOPT_REFERER試試,對方是不是有可能判斷了頁面來源
第二:對方的登陸頁是否有隱藏參數,如果有的話需要先訪問登陸頁擷取隱藏值再提交
第三:沒看見你什麼地方提交了登入的帳號和密碼,就是自己這邊POST過來的帳號和密碼
$url = "http://202.117.64.25/loginAction.do";
$fields = "dllx=dldl&zjh=201224080126&mm=201224080126";
這是提交賬戶和密碼!
CURLOPT_REFERER 要加什嗎?
找到兩個隱藏參數,但是貌似沒什麼用
幫你測試了一下,登入是沒問題的,已經登入成功,主要問題出在你第二次請求的參數上,檢查一下參數,抓取你第二個頁面上所有的參數下來,另外JAVA的這個報錯不是很懂!
幫你測試了一下,登入是沒問題的,已經登入成功,主要問題出在你第二次請求的參數上,檢查一下參數,抓取你第二個頁面上所有的參數下來,另外JAVA的這個報錯不是很懂!
你抓取成功了嗎?
大家幫忙看看,怎麼回事???
你的流程和代碼都有問題!正確的流程應該是:
1、訪問 http://202.117.64.25/
擷取 cookie。因為他的 sessionid 在這個頁面發出的
2、訪問 http://202.117.64.25/loginAction.do 並發送 post 表單資料
3、第2步返回的是一個架構頁,你得根據需要進入某個架構
比如訪問 http://202.117.64.25/menu/s_top.jsp 可以得到已登入資訊:歡迎光臨 黃小龍
測試代碼
<?phpinclude 'curl/curl_get.php';$url = 'http://202.117.64.25/';curl_get($url);$url = "http://202.117.64.25/loginAction.do";$d = 'dllx=dldl&zjh=201224080126&mm=201224080126';curl_get($url, $d);echo curl_get('http://202.117.64.25/menu/s_top.jsp');echo curl_get('http://202.117.64.25/menu/mainFrame.jsp');echo curl_get('http://202.117.64.25/xsxxviewAction.do');</pre> <br /> curl_get.php <pre class="sycode" name="code"><?phpfunction curl_get($durl, $data=array()) { $cookiejar = realpath('cookie.txt'); $t = parse_url($durl); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$durl); curl_setopt($ch, CURLOPT_TIMEOUT,5); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_REFERER, "http://$t[host]/"); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiejar); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_ENCODING, 1); //gzip 解碼 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); if($data) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); } $r = curl_exec($ch); curl_close($ch); return $r;}</pre> </p> <p class="sougouAnswer"> <p class="yy"> 你的流程和代碼都有問題!正確的流程應該是: <br /> 1、訪問 http://202.117.64.25/ <br /> 擷取 cookie。因為他的 sessionid 在這個頁面發出的 <br /> 2、訪問 http://202.117.64.25/loginAction.do 並發送 post 表單資料 <br /> 3、第2步返回的是一個架構頁,你得根據需要進入某個架構 <br /> 比如訪問 http://202.117.64.25/menu/s_top.jsp 可以得到已登入資訊:歡迎光臨 黃小龍 <br /> 測試代碼 <pre class="sycode" name="code"><xmp><?phpinclude 'curl/curl_get.php';$url = 'http://202.117.64.25/';curl_get($url);$url = "http://202.117.64.25/loginAction.do";$d = 'dllx=dldl&zjh=201224080126&mm=201224080126';curl_get($url, $d);echo curl_get('http://202.117.64.25/menu/s_top.jsp');echo curl_get('http://202.117.64.25/menu/mainFrame.jsp');echo curl_get('http://202.117.64.25/xsxxviewAction.do');</pre> <br /> curl_get.php <pre class="sycode" name="code"><?phpfunction curl_get($durl, $data=array()) { $cookiejar = realpath('cookie.txt'); $t = parse_url($durl); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$durl); curl_setopt($ch, CURLOPT_TIMEOUT,5); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_REFERER, "http://$t[host]/"); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiejar); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_ENCODING, 1); //gzip 解碼 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); if($data) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); } $r = curl_exec($ch); curl_close($ch); return $r;}</pre> </p> <br /> 非常感謝你,成功了,但是還是不知道為什嗎? <br /> 這是我最終代碼 <br /> <pre class="sycode" name="code"><?phpinclude './curl/curl_get.php';$url = "http://202.117.64.25/loginAction.do";$d = 'dllx=dldl&zjh=201224080126&mm=201224080126';curl_get($url, $d);echo curl_get('http://202.117.64.25/xszxcxAction.do?oper=tjcx', 'zxxnxq=2014-2015-1-1&zxXaq=0&zxJxl=0011&zxZc=11&zxJc=2&zxxq=2&pageSize=20&page=1¤tPage=1&pageNo=');?></pre><li ><i class="layui-icon">