サイトをクロールしてすべての一意のリンクを取得し、そのそれぞれのドメインのルートに XML ファイルを作成/書き込むにはどうすればよいでしょうか。mydomain.com/generatesitemap.php を呼び出すと、このファイルはドメイン内のすべてのリンクをクロールし、ファイル sitemap.xml に書き込みます。cURLを使用したPHPでこれは可能ですか?
1 に答える
サイトによって異なります。それが単純なサイトであれば、タスクは単純です。curl または file_get_contents を介してサイトのルート ページを取得し、すべてのリンクを preg_match します (参照については、こちらを参照してください http://www.mkyong.com/regular-expressions/how-to-extract-html-links-with-regular-expression /)、サイト内にあるすべてのリンクを再帰的に取得します。すでに処理されているリンクは処理しません。
JavaScript が登場すると、タスクはより複雑になります。ナビゲーションが JavaScript データを使用している場合、リンクの取得が困難になります。select-combobox をドロップダウン メニューとして使用するなど、他のナビゲーション トリックが存在する可能性もあります。
クエリ文字列を含むページがある場合、タスクはさらに複雑になる可能性があります。カタログ セクションがあるとします。URLは次のようになります。
/catalogue
/catalogue?section=books
/catalogue?section=papers
/catalogue?section=magazines
1ページですか?
そして、これはどうですか?
/feedback
/feedback?mode=sent
したがって、これらのケースを処理する必要があります。
Google 検索には、このようなクローラーの例がたくさんあります。たとえば、これを見てください: