Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
似乎不能用PHP简单的HTML DOM解析器与网站擦肩而过_Php_Html_Web Scraping - Fatal编程技术网

似乎不能用PHP简单的HTML DOM解析器与网站擦肩而过

似乎不能用PHP简单的HTML DOM解析器与网站擦肩而过,php,html,web-scraping,Php,Html,Web Scraping,我是一个新的刮网站,我有兴趣从这个网站获得票价。 我在p#price-selected-label.filters-selected-label标签中看到了票价,但我似乎无法访问它。我尝试了一些方法并查看了一些教程,但要么返回空白,要么出现一些错误。代码基于 您无法获取它,因为javascript呈现了它,所以它在您的库获取的原始html中不可用 使用phantomjs(将执行javascript) 下载并将可执行文件放置在PHP二进制文件可以到达的路径中 将以下两个文件放在同一目录中: 获取w

我是一个新的刮网站,我有兴趣从这个网站获得票价。 我在p#price-selected-label.filters-selected-label标签中看到了票价,但我似乎无法访问它。我尝试了一些方法并查看了一些教程,但要么返回空白,要么出现一些错误。代码基于


您无法获取它,因为javascript呈现了它,所以它在您的库获取的原始html中不可用

使用phantomjs(将执行javascript)

  • 下载并将可执行文件放置在PHP二进制文件可以到达的路径中

  • 将以下两个文件放在同一目录中:

  • 获取website.php

    <?php
    
        $phantom_script= dirname(__FILE__). '/get-website.js';     
    
        $response =  exec ('phantomjs ' . $phantom_script);
    
        echo  htmlspecialchars($response);
    ?>
    
  • 浏览get-website.php和目标站点,执行内联javascript后将返回内容。您还可以使用php/path/to/get-website.php从命令行调用它

  • 网站有时会使用javascript向网站中填充内容。你必须使用php吗?不,我不需要使用php,我只是对它非常熟悉,但如果它工作得更好,我可以使用其他东西。Thanksi通常使用
    PhantomJs
    对于这类东西,它会抓取整个页面,您可以使用jquery选择所需元素并将其返回到php,报告空白页面或“某些错误”不是有用问题的一部分。在您的问题中提供实际的错误消息。感谢您提供的信息,我们将尝试一下!
    <?php
    
        $phantom_script= dirname(__FILE__). '/get-website.js';     
    
        $response =  exec ('phantomjs ' . $phantom_script);
    
        echo  htmlspecialchars($response);
    ?>
    
        var webPage = require('webpage');
        var page = webPage.create();    
    
        page.open('https://www.cheaptickets.com/events/tickets/firefly-music-festival-4-day-pass-2867495', function(status) {
            if (status === "success") {
                page.includeJs('http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', function() {          
                    var myElem = $('p#price-selected-label.filters-selected-label');
                    console.log(myElem);
                });
    
                phantom.exit();         
            }
        });