Web サイト全体をクロールしたいのですが、いくつかのスレッドを読みましたが、第 2 レベルでデータを取得できません。
つまり、開始ページからリンクを返すことはできますが、リンクを解析して各リンクのコンテンツを取得する方法を見つけることができません...
私が使用するコードは次のとおりです。
<?php
// SELECT STARTING PAGE
$url = 'http://mydomain.com/';
$html= file_get_contents($url);
// GET ALL THE LINKS OF EACH PAGE
// create a dom object
$dom = new DOMDocument();
@$dom->loadHTML($html);
// run xpath for the dom
$xPath = new DOMXPath($dom);
// get links from starting page
$elements = $xPath->query("//a/@href");
foreach ($elements as $e) {
echo $e->nodeValue. "<br />";
}
// Parse each page using the extracted links?
?>
誰かが例を挙げて最後の部分を手伝ってくれませんか?
私は本当に感謝します!
ええと、あなたの答えに感謝します!私はいくつかのことを試しましたが、まだ結果を得ることができませんでした.プログラミングは初めてです..
以下に、私の 2 つの試行を示します。1 回目はリンクを解析しようとし、2 回目は file_get の内容を Curl に置き換えようとしています。
1)
<?php
// GET STARTING PAGE
$url = 'http://www.capoeira.com.gr/';
$html= file_get_contents($url);
//GET ALL THE LINKS FROM STARTING PAGE
// create a dom object
$dom = new DOMDocument();
@$dom->loadHTML($html);
// run xpath for the dom
$xPath = new DOMXPath($dom);
// get specific elements from the sites
$elements = $xPath->query("//a/@href");
//PARSE EACH LINK
foreach($elements as $e) {
$URLS= file_get_contents($e);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xPath = new DOMXPath($dom);
$output = $xPath->query("//div[@class='content-entry clearfix']");
echo $output ->nodeValue;
}
?>
上記のコードでは、警告が表示されます: file_get_contents() は、パラメーター 1 が文字列であると想定しています。26 行目の ../example.php で指定されたオブジェクト
2)
<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_URL, "http://capoeira.com.gr");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$content= curl_exec($curl);
curl_close($curl);
$dom = new DOMDocument();
@$dom->loadHTML($content);
$xPath = new DOMXPath($dom);
$elements = $xPath->query("//a/@href");
foreach ($elements as $e) {
echo $e->nodeValue. "<br />";
}
?>
結果が出ません。$content をエコーしようとしたところ、次のようになりました。
このサーバーの / にアクセスする権限がありません。
さらに、ErrorDocument を使用して要求を処理しようとしたときに、413 Request Entity Too Large エラーが発生しました...
何かアイデアをください?? :)