100分奉上:帮忙看看这个网页如何采集?好像有cookie验证

wildlily980 2009-10-19 11:14:13
https://www.handelsregister.de/rp_web/mask.do?Typ=e
Postleitzahl:填入 01067
点击suchen
进入下一页,有一个Verdoppeln Sie hier das Suchergebnislimit. 链接
我想得到它的内容。但是一直返回错误。我想可能它设置了什么cookie.可是我已经在程序里面加了一个cookie变量。
$cookie_jar = tempnam('./tmp','cookie');
search($kookie_jar);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.handelsregister.de/rp_web/search.do?doppelt');
//curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);

$enterprises_list=curl_exec($ch);//返回错误

curl_close($ch);


请教下问题会在哪里?10分奉上。
...全文
95 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序猿之殇 2009-10-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wildlily980 的回复:]
看来您是个采集专家啊。这个问题被我绕过去了。不过原理还是不懂。
等有机会一定会研究您的代码。
再次感谢。
[/Quote]
专家谈不上,
你这个关键问题有两个:
1 https
2 cookie保存的jsessionid
wildlily980 2009-10-20
  • 打赏
  • 举报
回复
应该是少了jsessionid=%s
不过我用Ie的时候,没有这个,所以大意了。
原理暂时不研究了。
wildlily980 2009-10-20
  • 打赏
  • 举报
回复
看来您是个采集专家啊。这个问题被我绕过去了。不过原理还是不懂。
等有机会一定会研究您的代码。
再次感谢。
程序猿之殇 2009-10-20
  • 打赏
  • 举报
回复
本机测试通过,ff3,ie7
程序猿之殇 2009-10-20
  • 打赏
  • 举报
回复
第一个获取cookie,去掉没有试过.
第二个提交查询
第三个获取结果

set_time_limit(0);
$URL = 'https://www.handelsregister.de/rp_web/mask.do?Typ=e';
define( "COOKIEJAR", tempnam(ini_get( "upload_tmp_dir" ), "cookie"));
$useragent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)";
$header = array('Accept-Language: zh-cn','Connection: Keep-Alive','Cache-Control: no-cache');

$ch = curl_init();
curl_setopt($ch, CURLOPT_REFERER, $URL);
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);
curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $URL);
$result = curl_exec($ch);

$strPOST = "suchTyp=e&eregisterArt=®isterNummer®istergericht=&schlagwoerter=&schlagwortOptionen=2&niederlassung=&rechtsform=&postleitzahl=01067&ort=&strasse=&ergebnisseProSeite=10&btnSuche=Suchen";
$ch = curl_init();
curl_setopt($ch, CURLOPT_REFERER, $URL);
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);
curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $strPOST);
curl_setopt($ch, CURLOPT_URL, "https://www.handelsregister.de/rp_web/mask.do?Typ=e");
$result = curl_exec($ch);
$str = file_get_contents(COOKIEJAR);
if(preg_match("/JSESSIONID\s([\w\.]+)/",$str,$matches))
{
$sessionid = $matches[1];
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_REFERER, "https://www.handelsregister.de/rp_web/mask.do?Typ=e");
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);
curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, sprintf("https://www.handelsregister.de/rp_web/search.do;jsessionid=%s?doppelt", $sessionid));
$result = curl_exec($ch);
echo $result;

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧