HTML 解析用の PHP スクリプトしかなく、単純な Web サイトで動作しますが、この Web サイトからシネマ プログラムを解析する必要があります。私はfile_get_contents
関数を使用しています.4つの改行区切り文字だけを返しますが、その\n
理由がわかりません. プログラム自体は単なるポップアップ ウィンドウであり、URL アドレスを変更しないように見えるため、Web サイト自体を DOMDocument a XPath で解析するのはより困難になりますが、サイトの 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));
}
?>