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