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),并搜索其中的所有链接,有点像网络爬虫,它通过第一个站点得到它得到的链接不会去任何地方因为它们是 css 链接或 js 或不是页面的东西。如何修复它以仅获取正文标签或实际链接中的链接?

4

1 回答 1

1

这是在应用正则表达式之前将内容修剪为仅正文标签内的内容的粗略方法:

$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 回答