2009-11-24 7 views

답변

7

가장 쉬운 방법은 wget입니다. HTML과 그 의존성을 재귀 적으로 다운로드 할 수 있습니다. 그렇지 않으면 html을 직접 파싱합니다. 순수한 PHP에서 수행하는 방법에 대한 자세한 내용은 Yacoby의 대답을 참조하십시오.

0

화면 스크래핑이 가장 좋은 답변 일 수 있습니다. 당신이 아마<script src="..."> 같은 일을 찾아 몇 가지 정규식을 사용하는 사람들을 많이 얻을 수있는 지금까지 의존성 등 http://us.php.net/manual/en/book.curl.php

을,하지만 적절한 :

1

당신은 PHP의 컬 래퍼를 살펴 걸릴 수 있습니다 (X) HTML 구문 분석기를 사용하면 DOM을보다 의미있게 트래버스 할 수 있습니다.

+0

나는 다운 voter가 아니었지만 정규 표현식을 사용하여 html을 구문 분석하는 것은 상처의 세계를 요구하고 있습니다. –

+0

RegEx를 사용하여 HTML을 구문 분석하지 마십시오. 왜 : http://www.codinghorror.com/blog/archives/001311.html –

+0

나는 Regex와 함께 (불가능한) HTML을 "파싱"하는 것이 나쁜 생각인지 완전히 알고 있습니다. 구문 분석이 아니라 "look for things"에 정규 표현식을 사용할 수 있다는 것을 의미했기 때문에 특별히 구문 분석이라는 단어를 사용하지 않았다는 점에 유의해야합니다. – theraccoonbear

4

모든 것을 단순화하기 위해 html 구문 분석 라이브러리를 사용하는 것이 좋습니다. 즉 Simple HTML DOM과 같은 것입니다. 나는 file_get_contents를 사용을 통해 훨씬 더 제어 할 수 있습니다로, 같은 컬과 같은 HTTP 래퍼를 사용하는 것이 좋습니다 다운로드 파일 (및 HTML)에 대한

$html = file_get_html('http://www.google.com/'); 
foreach($html->find('img') as $element){ 
    //download image 
} 

것 :

간단한 HTML DOM을 사용. 그러나, 당신이 file_get_contents를 사용하고 싶다면 PHP 사이트에 URL을 얻는 방법 중 일부는 good examples입니다.

더 복잡한 방법을 사용하면 헤더를 지정할 수 있으므로 사용자 에이전트를 설정하려는 경우 유용 할 수 있습니다. (다른 사이트를 많이 긁는다면 사용자 지정 사용자 에이전트를 사용하는 것이 좋으며 너무 많은 대역폭을 사용하는 경우 웹 사이트 관리자가 귀하의 사이트 또는 연락 지점을 사용하게 할 수 있습니다. IP 주소).

$opts = array(
    'http'=>array(
    'method'=>"GET", 
    'header'=>"Accept-language: en\r\n" 
) 
); 

$context = stream_context_create($opts); 
$file = file_get_contents('http://www.example.com/', false, $context); 

물론이에 의해 간단하게 수행 할 수 있지만 :

$file = file_get_contents('http://www.example.com/'); 
+1

+1 이것은 순수한 PHP에서 어떻게 할 것입니다. –

2

당신이에있다 cURL with PHP을보고 싶은 도서관. cURL은 HTTP 요청 및 기타 네트워킹 프로토콜과 관련된 작업을 수행하지만 HTTP가 가장 많이 사용됩니다. GET/POST 변수와 함께 HTTP 쿠키를 설정할 수 있습니다.

자동으로 종속성을 다운로드 할 것인지 확실하지 않습니다. HTML을 다운로드하고 IMG/LINK 태그를 구문 분석 한 다음 cURL을 다시 사용하여 해당 종속성을 가져와야 할 수 있습니다.

이 작업을 수행하는 방법에 대한 자습서가 있습니다. Here's a simple example (PHP의 cURL을 바인딩 기반이되는시) libcurl에를 만드는 사람들에서 기본 HTTP GET 요청에 대한 (맨 아래로 스크롤) :

당신은 아마 HTML을 구문 분석 SimpleXML를 사용하면된다 할 것입니다 무엇
<?php 
// 
// A very simple example that gets a HTTP page. 
// 

$ch = curl_init(); 

curl_setopt ($ch, CURLOPT_URL, "http://www.zend.com/"); 
curl_setopt ($ch, CURLOPT_HEADER, 0); 

curl_exec ($ch); 

curl_close ($ch); 
?> 
0

당신이

<img> 

또는

<script> 

태그를 쳤을 때, 그리고, SRC 매개 변수를 읽고 해당 파일을 다운로드합니다.

1

나는 대부분의 옵션은 PHP와 스크린 스크래핑에 대한 SO 질문에 덮여 생각 :이 질문에 대한 대답 기계화로하지만, PHP에 대한 유사한 작업을 수행하는 라이브러리가있다. 예를 how to implement a web scraper in php 또는 how do i implement a screen scraper in php

난 당신이 단지 화면 스크레이퍼 이상을 원하는 실현하지만,이 질문은 당신을 응답 할 것이다 내 생각에 대한

.

관련 문제