【发布时间】:2014-05-17 20:41:02
【问题描述】:
我要去刮http://www.car4you.at/Haendlersuche 它首次显示 20 个结果和分页。我成功抓取了 20 个链接,但由于分页的 href 中没有链接,因此无法获取到下一页的链接。它包含一个javascript函数。
href="javascript:AjaxCallback_ResList('ResultList', 'Pager', '1_1874')"
我的问题是如何使用 curl 加载页面然后单击下一页按钮,等待响应然后解析它。
这是我正在尝试的
卷曲的功能
function postCurlReq($loginActionUrl,$parameters,$referer)
{
curl_setopt ($this->curl, CURLOPT_URL,$loginActionUrl);
curl_setopt ($this->curl, CURLOPT_POST, 1);
curl_setopt ($this->curl, CURLOPT_POSTFIELDS, $parameters);
curl_setopt ($this->curl, CURLOPT_COOKIEJAR, realpath('cookie.txt')); // cookie.txt should be in same directoy, where calling script is
curl_setopt ($this->curl, CURLOPT_COOKIEFILE, realpath('cookie.txt'));
curl_setopt ($this->curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($this->curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($this->curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i586; de; rv:5.0) Gecko/20100101 Firefox/5.0');
curl_setopt ($this->curl, CURLOPT_REFERER, $referer); // set referer
curl_setopt ($this->curl, CURLOPT_SSL_VERIFYPEER, FALSE);// ssl certificate
curl_setopt ($this->curl, CURLOPT_SSL_VERIFYHOST, 2);
$result['EXE'] = curl_exec($this->curl);
$result['INF'] = curl_getinfo($this->curl);
$result['ERR'] = curl_error($this->curl);
return $result;
}
并且尝试过的代码是用于分页
$loginUrl = "http://www.car4you.at/Haendlersuche";
$parameters = array("href" => "javascript:AjaxCallback_ResList('ResultList', 'Pager', '1_1874')");
$referer = "http://www.car4you.at/Haendlersuche";
$loginHTML = $crawler->postCurlReq($loginUrl,$parameters,$referer);
if ( empty($loginHTML['ERR']) ) { // if no error occure in opening url
print_r($loginHTML['EXE']);
}
第二种抓取方法是选择列表,显示结果如下 10 20 50 如果我的脚本成功选择 50 那么它也将是快乐的工作 并且尝试过的代码是用于选择列表
$loginUrl = "http://www.car4you.at/Haendlersuche";
$parameters = array("value" => "50");
$referer = "http://www.car4you.at/Haendlersuche";
$loginHTML = $crawler->postCurlReq($loginUrl,$parameters,$referer);
if ( empty($loginHTML['ERR']) ) { // if no error occure in opening url
print_r($loginHTML['EXE']);
}
【问题讨论】:
-
和我现在遇到的问题一模一样!
-
hmmmm,如果你得到解决方案,也请在这里提供
-
对不起!我真的没有!我转到了一个没有分页的页面!
-
您不能在 PHP 中使用 cURL 运行 javascript,您必须弄清楚请求的内容和位置,或者使用无头浏览器来伪造用户操作。
标签: javascript php jquery ajax curl