【发布时间】:2018-05-18 05:20:39
【问题描述】:
我正在尝试从我通过 cUrl 发布到的网站生成的新窗口(使用 Javascript 的 window.open())中抓取数据,但我不确定如何去做。
目标站点仅在向其发布某些参数时才生成所需的数据,而没有其他方式。
以下代码只是转储 cUrl 请求的结果,但结果不包含任何相关数据。
我的代码:
//build post data for request
$proofData = array("formula" => $formula,
"proof" => $proof,
"action" => $action);
$postProofData = http_build_query($proofData);
$ch = curl_init($url); //open connection
//sort curl settings for request
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 3);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postProofData);
//obtain data from LigLab
$result = curl_exec($ch);
//finish connection
curl_close($ch);
echo "forumla: " . $formula;
var_dump($result);
生成的代码如下
目标网站代码:
var proof = "<?php echo str_replace("\n","|",$annoted_proof) ?>";
var lines = proof.split('|');
proof_window=window.open("","Proof and Justifications","scrollbar=yes,resizable=yes, titlebar=yes,menubar=yes,status=yes,width= 800, height=800, alwaysRaised=yes");
for(var i = 0;i < lines.length;i++){
proof_window.document.write(lines[i]);
proof_window.document.write("\n");
}
我想抓取行变量,但它是在页面加载后和用户交互后生成的。
【问题讨论】:
-
你需要一个无头浏览器。
-
一定会试一试的,谢谢!
标签: javascript php curl web-scraping