2

私は単純なWeb スパイダーを作成していますが、ドメイン上のすべての Web ページを取得できる PHP コードでトリガーできる方法があるかどうか疑問に思っていました...

たとえば、Stackoverflow.com のすべての Web ページを取得したいとします。つまり、次 ようになります。 https://stackoverflow.com/questions/1234214/ 最高の Rails HTML パーサー

そしてすべてのリンク。どうすればそれを手に入れることができますか。または、それを取得できるAPIまたはDIRECTORYはありますか?

また、すべてのサブドメインを取得する方法はありますか?

ところで、クローラーはSiteMapsSyndication フィードを持たない Web サイトをどのようにクロールしますか?

乾杯。

4

5 に答える 5

4

サイトがこれを実行できるようにしたい場合は、おそらくSitemapを提供します。サイトマップとページ上のリンクを組み合わせて使用​​すると、サイト上のすべてのページをトラバースできるはずです。

サイトがこれを行うことを望まない場合、回避するためにできることは何もありません。HTTP は、ディレクトリの内容を一覧表示するための標準メカニズムを提供しません。

于 2012-12-17T21:21:41.343 に答える
1

申し訳ありませんが、サーバーをハックする必要があります。

できることは、ドメイン www.my-domain.com を所有している場合、そこに PHP ファイルを置き、それを要求オンデマンド ファイルとして使用することです。その php ファイルには、Folders FTP Wise を参照できる何らかのコードをコーディングする必要があります。PHPはFTPサーバーに接続できるので、それが方法です:)

http://dk1.php.net/manual/en/book.ftp.php

PHP を使用して dirs フォルダーを読み取り、それを配列として返すことができます。私ができる最善のこと。

于 2012-12-17T21:20:54.143 に答える
1

あなたが言ったように、あなたはすべてのリンクをたどらなければなりません。

これを行うには、まず、stackoverflow.com, easy: を取得する必要がありますfile_get_contents ("http:\\stackoverflow.com")

次に、リンクを探してそのコンテンツを解析します: <a href="question/ask">、それほど簡単ではありません。

これらの新しい URL をデータベースに保存してから、それらを解析します。これにより、まったく新しい URL のセットが得られ、それらを解析します。すぐに、sub1.stackoverflow.com のようなものを含む、サイトのコンテンツの大部分を手に入れることができます。これはクロールと呼ばれ、実装は非常に簡単ですが、すべてのデータを取得した後で有用な情報を取得するのはそれほど簡単ではありません。

特定の 1 つのドメインのみに関心がある場合は、外部サイトへのリンクを無視してください。

于 2012-12-17T21:30:26.190 に答える
0

WinHTTPTack /を使用できます。しかし、他の人々のWebサイトを槌で打たないのは礼儀正しいことです。

壊れたリンクを見つけてスナップショットを作成するために使用します。

あなたが他の人々のサイトを殴り始めたら、彼らは対策を講じます。それらのいくつかは良くないでしょう(すなわち、あなたのものを打ちます)。

丁寧に。

于 2012-12-17T21:48:40.763 に答える
0

いいえ、あなたが求めている方法ではありません。

ただし、明確な目標を念頭に置いている場合は、次のことができる場合があります。

  • 対象のオブジェクトを取得するには、「プライマリ」リクエストを使用します。一部のサイトでは、JSON、XML、... API を提供して、そのようなオブジェクトを一覧表示します (たとえば、SO はこの方法で質問を一覧表示できます)。次に、「オブジェクトごと」のリクエストを使用して、1 つのオブジェクトに固有の情報をフェッチします。

  • 検索エンジン、ディレクトリ、SpyOnWeb などの「フォレンジック」ツールなど、他のオープン (または有料) ソースから情報を取得する

  • サイトの構造をリバース エンジニアリングします。たとえば/item/<id>、ID が<id>

  • ウェブマスターに聞く

これらのソリューションの一部は、サイトの利用規約に違反している可能性があることに注意してください。とにかく、これらは私の頭の上にある単なるポインタです。

于 2012-12-17T21:32:13.633 に答える