首页 > 解决方案 > 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"]')

标签: phpxpathweb-scrapingdomxpath

解决方案


每次当你看到这些 JavaScript 生成的内容,尤其是来自亚马逊、谷歌等大公司的内容时,你应该立即认为它会有一个优雅的降级实现。

这意味着它将在 Javascript 不像链接浏览器那样工作的地方完成,以获得更好的浏览器覆盖率。

留意<noscript>你可能会找到一个。这样你就可以解决问题了。


推荐阅读