Home  >  Article  >  Backend Development  >  关于抓取网站数据,出现302重定向!该如何处理

关于抓取网站数据,出现302重定向!该如何处理

WBOY
WBOYOriginal
2016-06-13 11:52:531689browse

关于抓取网站数据,出现302重定向!急!急!急!
目标网站:http://www.dltm.net/webtmq/free/free_query.php
第一步:输入商标号,提交(post抓起)

第二步:点击商标号

第三步:需要抓取的数据


前两步均已实现抓取,但抓取最后一步时老是出现302重定向,导致数据抓取不到。
相关代码:

<br />//第一步<br />define(TARGET_URL,'http://www.dltm.net/webtmq/free/free_query.php');<br />define(REFFER_URL,'http://www.dltm.net');<br />$url=TARGET_URL;<br />$ch=curl_init($url);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//返回结果存放在变量中,而不是默认的直接输出<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_REFERER, REFFER_URL);<br />$result= curl_exec($ch);//保存输出的页面到$result中<br />curl_close($ch);<br />preg_match_all('<input type="hidden" name="ip" value="(.*)">',$result,$rs);<br /><br />//第二步<br />$fields_post = array(<br />	'ip'=>$rs[1][0],<br />	'textarea_explain'=>'%B2%E9%D1%AF%C8%AB%B2%BF%C0%E0%B1%F0',<br />	'tm_lb'=> '0',<br />	'tm_key'=>'8437927',<br />	'tm_key_item'=>'tm_zch',<br />	'query_mode'=>'1'<br />);<br /><br />$fields_string='';<br />foreach($fields_post as $key => $value)<br />{<br />    $fields_string .= $key . '=' . $value . '&';<br />}<br />$fields_string = rtrim($fields_string,'&');<br /><br />define(TARGET_URL1,'http://www.dltm.net/webtmq/free/free_res.php');<br />define(REFFER_URL1,'http://www.dltm.net/webtmq/free/free_res.php');<br />$url=TARGET_URL1;<br />$ch=curl_init($url);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//返回结果存放在变量中,而不是默认的直接输出<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_REFERER, REFFER_URL1);<br />curl_setopt($ch,CURLOPT_POST,1);//以POST方式提交<br />curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);<br />$result= curl_exec($ch);//保存输出的页面到$result中<br />curl_close($ch);<br /><br />//第三步<br />preg_match_all('<a href="(.*)" target="detail">',$result,$res);<br />$url = 'http://www.dltm.net/webtmq/free/'.$res[1][0];<br /><br />$ch=curl_init($url);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//返回结果存放在变量中,而不是默认的直接输出<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_REFERER, REFFER_URL1);<br />$result= curl_exec($ch);//保存输出的页面到$result中<br />curl_close($ch);<br />print_r($result);exit;//这一步得不到数据<br />

可以自己copy一下代码运行一下,第三步数据得不到,大神能帮我看看么,如果能得到数据,请贴出你的源码,非常感谢!!!
------解决方案--------------------
增加
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
------解决方案--------------------
怎么不可以呢?
以注册号 8437927 为例
新建一文件 cookie.txt,执行代码
$cookie = realpath('cookie.txt'); //这是增加的<br />//第一步<br />define('TARGET_URL','http://www.dltm.net/webtmq/free/free_query.php');<br />define('REFFER_URL','http://www.dltm.net');<br />$url=TARGET_URL;<br />$ch=curl_init($url);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//返回结果存放在变量中,而不是默认的直接输出<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_REFERER, REFFER_URL);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //这是增加的<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); //这是增加的<br />$result= curl_exec($ch);//保存输出的页面到$result中<br />curl_close($ch);<br />preg_match_all('<input type="hidden" name="ip" value="(.*)">',$result,$rs);<br /> <br />//第二步<br />$fields_post = array(<br />    'ip'=>$rs[1][0],<br />    'textarea_explain'=>'%B2%E9%D1%AF%C8%AB%B2%BF%C0%E0%B1%F0',<br />    'tm_lb'=> '0',<br />    'tm_key'=>'8437927',<br />    'tm_key_item'=>'tm_zch',<br />    'query_mode'=>'1'<br />);<br /> <br />$fields_string='';<br />foreach($fields_post as $key => $value)<br />{<br />    $fields_string .= $key . '=' . $value . '&';<br />}<br />$fields_string = rtrim($fields_string,'&');<br /> <br />define('TARGET_URL1','http://www.dltm.net/webtmq/free/free_res.php');<br />define('REFFER_URL1','http://www.dltm.net/webtmq/free/free_res.php');<br />$url=TARGET_URL1;<br />$ch=curl_init($url);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//返回结果存放在变量中,而不是默认的直接输出<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_REFERER, REFFER_URL1);<br />curl_setopt($ch,CURLOPT_POST,1);//以POST方式提交<br />curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //这是增加的<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); //这是增加的<br />$result= curl_exec($ch);//保存输出的页面到$result中<br />curl_close($ch);<br /> <br />//第三步<br />preg_match_all('<a href="(.*)" target="detail">',$result,$res);<br />$url = 'http://www.dltm.net/webtmq/free/'.$res[1][0];<br /> <br />$ch=curl_init($url);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//返回结果存放在变量中,而不是默认的直接输出<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_REFERER, REFFER_URL1);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //这是增加的<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); //这是增加的<br />$result= curl_exec($ch);//保存输出的页面到$result中<br />curl_close($ch);<br />print_r($result);exit;

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn