【问题标题】:PHP Curl - Scraping from data from site that has data in window.open created by JavascriptPHP Curl - 从由 Javascript 创建的 window.open 中具有数据的站点中抓取数据
【发布时间】: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


【解决方案1】:

您无法使用 curl 解析已处理的 javascript 代码。

您必须使用无头浏览器,它通过事件(点击、悬停和 javascript 代码)模拟真实浏览器

您可以从这里开始http://www.simpletest.org/en/browser_documentation.html 或从这里开始PHP Headless Browser?

【讨论】:

    猜你喜欢
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 2021-04-06
    • 1970-01-01
    相关资源
    最近更新 更多