2011-07-06 16 views
0

PHP에서 간단한 크롤러를 만들면 웹 페이지에서 링크를 가져오고, URL을 에코하고, 특정 도메인에서 동일한 작업을 수행하는 다른 페이지로 크롤링 할 수 있습니다. 여기서 cURL을 사용해야합니까? 또한 .. 크롤러의 깊이를 지정하면 어떻게됩니까?PHP에서 간단한 크롤러가 링크를 반향합니다.

지금까지이 있습니다

$dom = new DOMDocument; 
$dom->loadHTML($html); 
foreach($dom->getElementsByTagName('a') as $node) { 
    echo $dom->saveXml($node), PHP_EOL; 
} 
+0

유일한 질문은 "CURL 사용 또는 사용 안함"에 대한 대답 인 경우 - 대답은 "예, 사용하십시오" – zerkms

+0

글쎄 나는 이것을하는 법을 알고 싶습니다 ... CURL은 상당히 새로운 것입니다 .. . 그리고 나는 꽤 많이 둘러 보았다. – re1man

+0

나는 PHP로 타임 아웃 제한에 부딪 힐 수 있다고 덧붙인다. –

답변

2

체크 아웃 Snoopy, 컬 주위에 간단한 래퍼. 아래는 몇 가지 샘플 코드입니다

/* 
You need the snoopy.class.php from 
http://snoopy.sourceforge.net/ 
*/ 
  
include("snoopy.class.php"); 
  
$snoopy = new Snoopy; 
  
// need an proxy?: 
//$snoopy->proxy_host = "my.proxy.host"; 
//$snoopy->proxy_port = "8080"; 
  
// set browser and referer: 
$snoopy->agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"; 
$snoopy->referer = "http://www.jonasjohn.de/"; 
  
// set some cookies: 
$snoopy->cookies["SessionID"] = '238472834723489'; 
$snoopy->cookies["favoriteColor"] = "blue"; 
  
// set an raw-header: 
$snoopy->rawheaders["Pragma"] = "no-cache"; 
  
// set some internal variables: 
$snoopy->maxredirs = 2; 
$snoopy->offsiteok = false; 
$snoopy->expandlinks = false; 
  
// set username and password (optional) 
//$snoopy->user = "joe"; 
//$snoopy->pass = "bloe"; 
  
// fetch the text of the website www.google.com: 
if($snoopy->fetchtext("http://www.google.com")){ 
    // other methods: fetch, fetchform, fetchlinks, submittext and submitlinks 
  
    // response code: 
    print "response code: ".$snoopy->response_code."<br/>\n"; 
  
    // print the headers: 
  
    print "<b>Headers:</b><br/>"; 
    while(list($key,$val) = each($snoopy->headers)){ 
     print $key.": ".$val."<br/>\n"; 
    } 
  
    print "<br/>\n"; 
  
    // print the texts of the website: 
    print "<pre>".htmlspecialchars($snoopy->results)."</pre>\n"; 
  
} 
else { 
    print "Snoopy: error while fetching document: ".$snoopy->error."\n"; 
} 

"fetchlinks"를 사용하여 링크를 가져와야합니다.

관련 문제