1

ので、私は持っています :

function crawl( $url ){
   $content = @file_get_contents( $url );
   if( $content === FALSE) {
       echo "<br/> Not working " . $url;
       return;
   }

   $content = strtolower( $content );

   preg_match_all( '/http:\/\/[^ "\']+/', $content , $links );

   foreach( $links[0] as $crawled ){
       sleep( 1 );

       crawl( $crawled );
   }
}

私が与えたサイト ($url) を通過し、そこにあるすべてのリンクを Web クローラーのように検索し、最初のサイトを通過してどこにも行かないリンクを取得するようにしたいそれらはcssリンクまたはjsまたはページではない何かです。body タグまたは実際のリンクのリンクのみを取得するように修正するにはどうすればよいですか?

4

1 に答える 1

1

正規表現を適用する前に、内容を body タグ内にあるものだけにトリミングする大雑把な方法を次に示します。

$content = strtolower( $content );
// Added code below...
$bodyStartPos = strpos( $content , "<body>" );
$bodyEndPos = strpos( $content , "</body>" );
$content = substr( $content, $bodyStartPos, $bodyEndPos - $bodyStartPos );

タグに空白を許可する、タグの長さを開始位置に追加する、終了タグが開始タグの後にあることを確認する、引用符内のタグを無視するなど、追加できる詳細があります。 ...

于 2013-08-30T21:34:37.713 に答える