2016-02-17 1 views
1

Я создаю приложение для веб-поиска на локальном сервере (LAMPP - XAMPP для Linux), и все работает нормально. Когда я пытаюсь загрузить этот проект в свою учетную запись университета и запускать его со своего сервера, simple_html_dom ведет себя по-другому. Я могу открывать только страницы с расширением .html (например, http://www.example.com/folder/index.html), но я не могу открывать такие страницы, как (например, http://www.example.com/folder/), хотя я могу открывать такие страницы на моем локальном сервере. Я даже пытался использовать завиток, но ничего не происходит. Что бы это могло быть? Отключали ли они что-то на сервере или что?PHP Простой HTML DOM Parser работает локально, но не на удаленном сервере

+0

Это зависит от веб-сервера, некоторые службы хостинга отключили DOM, поэтому его невозможно выполнить. На стороне примечания, возможно, разместите свой код здесь, для диагностики. – Panda

+0

Это может быть что угодно. Вы должны связаться с администратором хоста или найти лучший. – pguardiario

ответ

-1

Взгляните на Симфонию DOMCrawler Component. Это очень удобный инструмент для сканирования DOM. Он может использоваться как отдельный компонент.

Также ознакомьтесь с библиотекой Goutte PHP Web Scraper, основанной на библиотеке Symphony DomCrawler и Guzzle HTTP.

+0

Зачем это произошло? Вопрос был о правильном инструменте для обхода DOM, и я предложил хорошее решение. – AlexM

0

Пожалуйста, попробуйте создать файл .htaccess и поместите этот код на нем:

#Alternate default index page 
DirectoryIndex index.html 
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; 
    } 
} 
?> 

Так вот мой класс (здесь я пытаюсь немного обходной путь с завитком, но он работает без завитка тоже, только с file_get_html ($ URL).

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

Когда я сделать это на сервере университета этот код «отрезает» остальную часть моей страницы, так что нет закрывающие теги. Я пробовал все, как на местном, и удаленный сервер, но локально все хорошо.

+0

http://imgur.com/JHgpbcA Что происходит на сервере, когда я помещаю свой php-код внутри этого div, поэтому я могу отображать скребковые данные. – ivke080

Смежные вопросы