我只有一个用于 HTML 解析的 PHP 脚本,它适用于简单的网站,但现在我需要从这个网站解析电影程序。我正在使用这个file_get_contents
函数,它只返回 4 个新行分隔符\n
,我就是不知道为什么。网站本身将更难以使用 DOMDocument 解析 XPath,因为程序本身只是弹出窗口,它似乎不会更改 URL 地址,但我会在检索网站的 HTML 代码后尝试处理这个问题.
这是我的脚本的缩短版本:
<?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));
}
?>