php - xpath 从 iframe domXPath php 获取数据
问题描述
我正在玩抓取网站技术,对于前链接,它总是返回空的描述。原因是它由 JS 填充并带有以下代码,我们如何处理这些类型的场景。
// Frontend JS
P.when('DynamicIframe').execute(function(DynamicIframe){
var BookDescriptionIframe = null,
bookDescEncodedData = "book desc data",
bookDescriptionAvailableHeight,
minBookDescriptionInitialHeight = 112,
options = {},
iframeId = "bookDesc_iframe";
我正在使用 php domxpath 如下
$file = 'sample.html';
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
// I am saving the returned html to a file and reading the file.
@$dom->loadHTMLFile($file);
$xpath = new DOMXPath($dom);
// This xpath works on chrome console, but not here
// because the content is dynamically created via js
$desc = $xpath->query('//*[@id="bookDesc_iframe"]')
解决方案
每次当你看到这些 JavaScript 生成的内容,尤其是来自亚马逊、谷歌等大公司的内容时,你应该立即认为它会有一个优雅的降级实现。
这意味着它将在 Javascript 不像链接浏览器那样工作的地方完成,以获得更好的浏览器覆盖率。
留意<noscript>
你可能会找到一个。这样你就可以解决问题了。
推荐阅读
- c# - Web 请求的 AsyncLazy 实现
- ios - 测试核心蓝牙
- reactjs - React 子类型中的默认道具值
- leveldb - 为什么leveldb的bloomfilter的位数组需要分割成很多filterblock?
- openlayers - 带有地图框图层缩放问题的 OpenLayers5
- ionic-framework - 多键离子过滤JSON文件数据
- android - 如何管理 manifestProduct 风味的清单文件和包名
- mysql - 如何对共享相同值的行组中某些值的出现进行求和和计数
- c++ - 从自定义插件中配置 gradle cpp 插件
- python - 如何在Python中的一行使用中将f字符串与b字符串合并