提问人:Mastas 提问时间:8/13/2023 最后编辑:Mastas 更新时间:8/13/2023 访问量:31
是否可以使用 COM php 类和 IE 解析特定的 div 内容?
Is it possible to parse specific div content with COM php class and IE?
问:
所以问题出在标题上。我尝试使用 Internet Explorer 在服务器上呈现页面,然后在渲染后 - 从具有特定 Id(只是一个测试字符串)的 div 标签中抓取内容并将其显示在页面上。
但是我现在得到的只是 - IE 正在打开,然后脚本抛给我一个错误:
Fatal error: Uncaught com_exception: <b>Source:</b> Unknown<br/><b>Description:</b> Unknown in X:\server\code.php:11 Stack trace: #0 {main} thrown in X:\server\code.php on line 11
我的php代码是:
<?php
error_reporting(E_ALL);
$ie = new COM("InternetExplorer.Application");
$ie->Visible = true; // for debug
$handle = $ie->HWND;
$ie->Navigate2("http://testurl/test_page.html");
while ($ie->Busy) {
com_message_pump(4000);
}
$value1 = $ie->Document->body->getElementById("correct"); // <-- error is on that line!
print_r($value1);
$ie->Quit();
?>
我还尝试加载没有任何 js 脚本的空白页面,使用单个 123,但它也抛出了相同的错误,但在后台 IE 仍在加载 Ok 并显示页面。
我开始认为 $ie->Document-> 不要等待完全加载页面,因为完全加载所有 js 脚本并用信息填充 div 需要 15-20 秒,但是 $ie->Document-> 在脚本开始工作后 ~1 秒后抛出错误。有没有变体?
还试过这个:
$value1 = $ie->Document->innerhtml;
但一切都没有改变。我做错了什么?
使用 php 7.4 tbh.它与任何机器人都不相似,只需要来自服务器端的一些信息,这些信息只能通过旧的IE浏览器正确呈现。
更新
已尝试将代码更改为:
$ie = new COM("InternetExplorer.Application");
$ie->Visible = false; // for debug
$ie->Navigate("https://google.com");
while ($ie->ReadyState != 4) {
usleep(1000);
}
$pageContent = $ie->Document->body->innerHTML;
print_r($pageContent);
现在错误更改为:
致命错误:未捕获com_exception:错误 [0x80010108] 被调用对象已与客户端断开连接。
答: 暂无答案
评论