PHP简单的HTML DOM解析器在本地工作但不在远程服务器上工作

时间:2016-02-17 11:05:10

标签: php curl simple-html-dom

我正在我的本地(LAMPP - XAMPP for Linux)服务器上制作一些网络抓取应用程序,一切正常。当我尝试将该项目上传到我的大学帐户并从他们的服务器运行时,simple_html_dom的行为有所不同。我只能打开扩展名为.html的页面(例如http://www.example.com/folder/index.html),但我无法打开像(例如http://www.example.com/folder/)这样的页面,即使我可以在我的本地打开这样的页面服务器。我甚至尝试过使用卷曲,但没有任何反应。会是什么呢?他们在服务器上禁用了什么,或者是什么?

3 个答案:

答案 0 :(得分:1)

<?php
require("simple_html_dom.php");

class PageExtractor {
    private $page;
    private $str;

    public function __construct($url) {
        $this->loadPage($url);
        if (!isset($this->page))
            echo "<strong>ERROR - Couldn't open the page";
    }
    public function loadPage($url) {
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_HEADER, false);
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
        $this->str = curl_exec($ch);
        curl_close($ch);
        $this->page = new simple_html_dom();
        $this->page->load($this->str);
    }
    public function showPage() {
        echo $this->page;
    }
}
?>

所以这是我的课程(这里我正在尝试使用curl进行一些解决方法,但它的工作也没有卷曲,只有file_get_html($ url)。

<?php
require("PageExtractor.class.php");
$e = new PageExtractor("http://example.com/~folder/");
$e->showPage();
?>

当我在大学服务器上执行此操作时,此代码会切断&#39;我的页面的其余部分,所以没有结束标记。我已尝试过本地和远程服务器上的所有内容,但本地一切都很好。

答案 1 :(得分:0)

请尝试创建.htaccess文件并将此代码置于其上:

#Alternate default index page
DirectoryIndex index.html

答案 2 :(得分:-1)

看一下Symphony DOMCrawler Component。这是一个非常方便的DOM爬行工具。它可以用作独立组件。

另外,请查看Goutte PHP Web Scraper库,该库基于Symphony DomCrawler和Guzzle HTTP库。