我正在使用phpQuery来模拟浏览器请求。代码很简单,如下所示:
require_once('phpQuery/phpQuery.php');
phpQuery::browserGet($url, 'success1');
function success1($browser) {
print $browser;
}
其中 URL 是 http://www.etk.cc/bmw/EN/parts/info/13547556118
。
但是,我收到了以下例外:
致命错误:未捕获的异常"Zend_Uri_Exception",并显示消息 'Path "/bmw/EN/parts/info/http://www.etk.cc/bmw/EN/parts/info/Throttle 包含 Assy/13547556118/" 不是有效的 HTTP 路径'
据信 URL 重写将 URL 更改为 http://www.etk.cc/bmw/EN/parts/info/Throttle housing Assy/13547556118/
,但 phpQuery 或 Zend 库无法识别 URL 重写。
如何解决此问题(加载正确的 URL(?
注意:在URL重写后,我无法使用URL,因为URL包含产品名称并且没有模式。
这是我
的解决方案。
我首先使用以下代码来获取请求的标头:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
$out = curl_exec($ch);
从Location:
标题中,我可以知道重写的URL。然后,我再次使用该phpQuery
,使用新获得的重写 URL 获取所需的信息。
脚注:我确实认为问题中的异常是phpQuery中的一个错误。