我只有一个用于HTML解析的PHP脚本,它适用于简单的网站,但现在我需要解析this website的电影程序。我正在使用file_get_contents
函数,它只返回4个新的行分隔符\n
,我只是不明白为什么。 由于程序本身只是弹出式窗口,并且它似乎没有更改URL地址,但我会在检索HTML代码后尝试处理此问题,因此网站本身将更难以用DOMDocument解析XPath现场。PHP file_get_contents仅返回换行
这里是我的脚本的缩短版:
<?php
$url = "http://www.cinemacity.cz/";
$content = file_get_contents($url);
$dom = new DomDocument;
$dom->loadHTML($content);
if ($dom == FALSE) {
echo "FAAAAIL\n";
}
$xpath = new DOMXPath($dom);
$tags = $xpath->query("/html");
foreach ($tags as $tag) {
var_dump(trim($tag->nodeValue));
}
?>
编辑:
因此,继WBAR(谢谢)的建议,我一直在寻找一种方式如何改变标题中file_get_contents()函数这是我在其他地方找到的答案。现在我能够获得该网站的HTML,希望我将管理这个烂摊子解析:d
<?php
libxml_use_internal_errors(true);
// Create a stream
$opts = array(
'http'=>array(
'user_agent' => 'PHP libxml agent', //Wget 1.13.4
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
)
);
$context = stream_context_create($opts);
// Open the file using the HTTP headers set above
$content = file_get_contents('http://www.cinemacity.cz/', false, $context);
$dom = new DomDocument;
$dom->loadHTML($content);
if ($dom == FALSE) {
echo "FAAAAIL\n";
}
$xpath = new DOMXPath($dom);
$tags = $xpath->query("/html");
foreach ($tags as $tag) {
var_dump(trim($tag->nodeValue));
}
?>
哎呀返回,他们的代码确实是一个烂摊子。 html之间有很多新行。也许dom解析器被这个困惑了?我不知道。在将它提供给dom解析器之前,在多个换行符上尝试使用replace_all? – 2012-10-07 11:50:10
如果您使用命令行的默认php config不允许外部URL获取,请检查! – xception