>백엔드 개발 >PHP 튜토리얼 >PHP는 지정된 URL 페이지의 모든 링크를 가져옵니다.

PHP는 지정된 URL 페이지의 모든 링크를 가져옵니다.

WBOY
WBOY원래의
2016-08-08 09:25:58958검색

양식:http://www.uphtm.com/php/253.html

이것은 실제로 우리 개발자들이 흔히 사용하는 것입니다. 다른 웹사이트에서 친숙한 링크를 캡처하는 프로젝트를 할 때 사용했습니다. 오늘 친구가 지정된 URL 페이지의 모든 링크 기능을 가져오기 위해 PHP 함수를 컴파일하는 것을 보았습니다. . 정리했습니다. 일어나서 살펴보세요.

다음 코드는 지정된 URL 페이지의 모든 링크, 즉 모든 태그의 href 속성을 얻을 수 있습니다.

  1. // 링크의 HTML 코드 가져오기
  2. $html = file_get_contents('http://www.111cn.net');
  3. $dom = 새 DOMDocument();
  4. @$dom->loadHTML($html);
  5. $xpath = 새 DOMXPath($dom);
  6. $hrefs = $xpath->evaluate('/html/body//a');
  7. for ($i = 0; $i < $hrefs->length; $i++) {
  8. $href = $hrefs->항목($i);
  9. $url = $href->getAttribute('href');
  10. echo $url.'
    ';
  11. }

이 코드는 모든 태그의 href 속성을 가져오지만 href 속성 값이 반드시 링크일 필요는 없습니다. 이를 필터링하고 http:

로 시작하는 링크 주소만 유지할 수 있습니다.
  1. // 링크의 HTML 코드 가져오기
  2. $html = file_get_contents('http://www.111cn.net');
  3. $dom = 새 DOMDocument();
  4. @$dom->loadHTML($html);
  5. $xpath = 새 DOMXPath($dom);
  6. $hrefs = $xpath->evaluate('/html/body//a');
  7. for ($i = 0; $i < $hrefs->length; $i++) {
  8. $href = $hrefs->항목($i);
  9. $url = $href->getAttribute('href');
  10. // http로 시작하는 링크 유지
  11. if(substr($url, 0, 4) == 'http')
  12. echo $url.'
    ';
  13. }

fopen() 함수는 지정된 웹페이지의 모든 링크를 읽고 개수를 계산합니다. 이 코드는 웹페이지의 내용을 수집해야 하는 일부 장소에서 사용하기에 적합합니다. 홈 페이지는 Baidu 홈 페이지의 링크를 찾기 위한 예로 사용됩니다. 모든 링크 주소와 코드는 테스트되었으며 완벽하게 사용할 수 있습니다.

  1. if(empty($url))$url = "http://www.baidu.com/";//링크를 수집해야 하는 URL 주소
  2. $site=substr($url,0,strpos($url,"/",8));
  3. $base=substr($url,0,strrpos($url,"/")+1);//파일이 위치한 디렉토리
  4. $fp = fopen($url, "r" );//URL 주소 페이지 열기
  5. while(!feof($fp))$contents.=fread($fp,1024);
  6. $pattern="|href=['"]?([^ '"]+)['" ]|U";
  7. preg_match_all($pattern,$contents, $regArr, PREG_SET_ORDER);//정규 표현식을 사용하여 모든 href와 일치=
  8. for($i=0;$i
  9. if(!eregi("://",$regArr[$i][1]))//상대 경로인지, 즉 아직 //가 있는지 확인
  10. if(substr($regArr[$i][1],0,1)=="/")//사이트의 루트 디렉터리인가요
  11. echo "link".($i+1).":".$site.$regArr[$i][1]."
    ";//루트 디렉터리
  12. 그밖에
  13. echo "link".($i+1).":".$base.$regArr[$i][1]."
    ";//현재 디렉터리
  14. 그밖에
  15. echo "link".($i+1).":".$regArr[$i][1]."
    ";//상대 경로
  16. }
  17. fclose($fp);
  18. ?>

양식:http://www.uphtm.com/php/253.html

위 내용은 PHP 튜토리얼에 관심이 있는 친구들에게 내용을 포함하여 지정된 URL 페이지의 모든 링크를 가져오는 방법을 소개합니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.