题
我有一个PHP应用程序需要从另一个网页抓取内容,而我正在阅读的网页需要一个cookie。
我找到了有关如何使用Cookie后如何拨打此电话的信息( http://groups.google.com/group/comp.lang.php/msg/4f618114ab15ae2a ),但是我不知道如何生成cookie,或者cookie的位置/位置保存。
例如,要通过wget阅读此网页,请执行以下操作:
wget --quiet --save-cookies cookie.file --output-document=who.cares \
http://remoteServer/login.php?user=xxx&pass=yyy
wget --quiet --load-cookies cookie.file --output-document=documentiwant.html \
http://remoteServer/pageicareabout.html
...我的问题是如何在PHP中执行'--save-cookies'位,以便我可以在后续PHP stream_context_create / file_get_contents块中使用cookie:
$opts = array(http'=> array(
'method'=> "GET",
'header'=>
"Accept-language: en\r\n" .
"Cookie: **NoClueAtAll**\r\n"
)
);
$context = stream_context_create($opts);
$documentiwant = file_get_contents("http://remoteServer/pageicareabout.html",
0, $context);
解决方案
使用 cURL 可能会更好。 使用 curl_setopt 设置cookie处理选项。
如果这只是一次性的事情,你可以使用Firefox和 Live HTTP Headers 来获取标题,然后将其粘贴到您的PHP代码中。
其他提示
Shazam - 有效!太多了!如果其他人偶然发现这个页面,这里需要详细说明:
- 安装cURL(对我而言,它就像 简单的'sudo apt-get install php5-curl'在ubuntu中)
-
改变了 先前列出的PHP如下:
<?php $cr = curl_init('http://remoteServer/login.php?user=xxx&pass=yyy'); curl_setopt($cr, CURLOPT_RETURNTRANSFER, true); curl_setopt($cr, CURLOPT_COOKIEJAR, 'cookie.txt'); $whoCares = curl_exec($cr); curl_close($cr); $cr = curl_init('http://remoteServer/pageicareabout.html'); curl_setopt($cr, CURLOPT_RETURNTRANSFER, true); curl_setopt($cr, CURLOPT_COOKIEFILE, 'cookie.txt'); $documentiwant = curl_exec($cr); curl_close($cr); ?>
醇>
以上代码段受 http://www.weberdev.com/get_example-4555的影响很大。 HTML 。
不隶属于 StackOverflow