2013-07-22 3 views
0

PHP의 cURL을 사용하여 외부 사이트의 페이지를 방문하고 페이지의 전체 HTML 컨텐츠를 가져 오려고합니다.PHP cURL을 사용하여 페이지 컨텐츠 가져 오기

사이트를 방문하면 동일한 사이트의 다른 페이지로 리디렉션됩니다. 또한, 나는 사용자 에이전트를 설정해야합니다, 나는 PC의 windows7 크롬과 아이폰 4s에 대한 useragent 싶습니다.

$ch = curl_init ($url); 
curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 
curl_setopt($ch, CURLOPT_AUTOREFERER , true) 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); 
$kl = curl_exec ($ch); 
curl_close($ch); 
echo $kl; 

공지 사항 : : 나는 아마 더 오류로 실행됩니다
를이 내가 지금까지 무엇을 가지고 있습니다.

+1

사용 simplehtmldom 또는 phpquery이 libs와는 PHP4 위해 설계되었다 DevZer0 @ html로 – DevZer0

+0

을 구문 분석합니다. PHP5에는'DOMXPath' 또는'simple_xml_element-> xpath()'가 있습니다 – hek2mgl

+0

나는 cURL을 사용하고 싶습니다. 그러나 코멘트에 대한 감사합니다 – 131

답변

4

그래서 :

  1. 는 '그물에 적절한 해당 UserAgent 문자열을 검색합니다. @TroyCheng는
  2. CURLOPT_COOKIEFILE & CURLOPT_COOKIEJAR 사용 나타낸 바와
  3. CURLOPT_FOLLOWLOCATION 사용.
+0

감사합니다. 그것은 그것을했다. 슬프게도 나는 23 시간이 지나기 전까지 현상금을 줄 수 없다 :/ – 131

6

또한 HTTPS

$cookie = tmpfile(); 
$userAgent = 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31' ; 

$ch = curl_init($url); 

$options = array(
    CURLOPT_CONNECTTIMEOUT => 20 , 
    CURLOPT_USERAGENT => $userAgent, 
    CURLOPT_AUTOREFERER => true, 
    CURLOPT_FOLLOWLOCATION => true, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_COOKIEFILE => $cookie, 
    CURLOPT_COOKIEJAR => $cookie , 
    CURLOPT_SSL_VERIFYPEER => 0 , 
    CURLOPT_SSL_VERIFYHOST => 0 
); 

curl_setopt_array($ch, $options); 
$kl = curl_exec($ch); 
curl_close($ch); 
echo $kl; 
+1

고마워, 그것도 해냈어. – 131

1

가 왜 Buzz 같은 라이브러리를 사용하지 않는있는 URL을 고려할 필요가 있는가?

$request = new Buzz\Message\Request('GET', '/', 'http://google.com'); 
$response = new Buzz\Message\Response(); 

$client = new Buzz\Client\Curl(); 
// do not check https validity 
$client->setVerifyPeer(false); 
// define your user agent 
$client->setOption('CURLOPT_USERAGENT', $userAgent); 
$client->setOption('CURLOPT_COOKIEFILE', true); 
$client->setOption('CURLOPT_COOKIEJAR', true); 
$client->send($request, $response); 

if ($response->isOk()) 
{ 
    echo $response->getContent(); 

    // or if you want the dom 
    echo $response->toDomDocument(); 
} 
관련 문제