Ver Mensaje Individual
  #6 (permalink)  
Antiguo 04/08/2009, 11:29
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: [APORTE] file_get_contents(), cURL, HTTP_Request

Para poder manipular los links de lo que hayamos obtenido usando cualquiera de los metodos mencionados podemos usar este codigo. En este caso usaré file_get_contents()

Código PHP:
Ver original
  1. <?php
  2. $html = file_get_contents('http://www.example.com/');
  3. function extract_links($html) {
  4.     $links = array();
  5.     preg_match_all('/<a\s+.*?href=[\"\']?([^\"\' >]*)[\"\']?[^>]*>(.*?)<\/a>/i', $html,$matches,PREG_SET_ORDER);
  6.     foreach($matches as $match) {
  7.         $links[] = array($match[1],$match[2]);
  8.     }
  9.     return $links;
  10. }
  11. $links = extract_links($html);
  12. foreach ($links as $link) {
  13.     echo $link[0] . PHP_EOL;
  14. }
  15. ?>

Para bajar un archivo usando cURL se puede lograr de esta forma

Código PHP:
Ver original
  1. <?php
  2. $url = 'http://www.example.com/hola.zip';
  3.  
  4. $g=basename($url);
  5.  
  6. $fp=fopen($g, "w");
  7.  
  8. $ch = curl_init($url);
  9. curl_setopt($ch, CURLOPT_FILE, $fp);
  10. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
  11. curl_exec($ch);
  12.  
  13. fclose($fp);

Para bajar un archivo usando file_get_contents se puede lograr de esta forma
Código PHP:
Ver original
  1. <?php
  2. $url = "http://www.example.com/zip.zip";
  3. $g=basename($url);
  4. $content = file_get_contents($url);
  5. file_put_contents($g,$content);

Para leer un sitio web que verifica si es un navegador o no el que trata de ver la página web y solo despliega la información si es un navegador el que visita el sitio, puedes tratar el siguiente código

file_get_contents
Código PHP:
Ver original
  1. <?php
  2. $options = array('http' =>
  3.     array( 'header' => 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6' . PHP_EOL )
  4. );
  5. $context = stream_context_create($options);
  6. $page = file_get_contents('http://www.example.com', false, $context);
  7. echo $page;

cURL
Código PHP:
Ver original
  1. <?php
  2. $ch = curl_init();
  3. curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6');
  4. curl_setopt($ch, CURLOPT_URL, 'http://example.com');
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  6. $page = curl_exec($ch);
  7. echo $page;
Un ejemplo lo pueden ver en este tema http://www.forosdelweb.com/f18/enigm...-error-833165/

Enviar petición, con la mayoría de las cabeceras que envían los navegadores

file_get_contents
Código PHP:
Ver original
  1. <?php
  2. $options = array('http' =>
  3.     array(
  4.         'header' => array(
  5.             'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6',
  6.             'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
  7.             'Cache-Control: max-age=0',
  8.             'Connection: keep-alive',
  9.             'Keep-Alive: 300',
  10.             'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
  11.             'Accept-Language: en-us,en;q=0.5',
  12.             'Pragma: ',
  13.         )
  14.     )
  15. );
  16. $context = stream_context_create($options);
  17. $page = file_get_contents('http://www.example.com', false, $context);
  18. echo $page;

cURL
Código PHP:
Ver original
  1. <?php
  2. $header[] = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";  
  3. $header[] = "Cache-Control: max-age=0";
  4. $header[] = "Connection: keep-alive";
  5. $header[] = "Keep-Alive: 300";
  6. $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
  7. $header[] = "Accept-Language: en-us,en;q=0.5";
  8. $header[] = "Pragma: "; // browsers keep this blank.
  9. $ch = curl_init();
  10. curl_setopt($ch, CURLOPT_URL,'http://www.example.com');
  11. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  12. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)');
  13. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  14. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  15. $page = curl_exec ($ch);
  16. curl_close ($ch);
  17. echo $page;

Para autenticar, por ejemplo htpasswd se puede lograr de esta forma
Código PHP:
Ver original
  1. <?php
  2. $url = "http://example.com/authenticate.php";
  3. $curl = curl_init();
  4. curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  5. curl_setopt($curl, CURLOPT_USERPWD, "user:pass");
  6. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  7. curl_setopt($curl, CURLOPT_URL, $url);
  8. $data = curl_exec($curl);
  9. curl_close($curl);
  10. echo $data;
Este fue tomado del siguiente tema http://www.forosdelweb.com/f18/obten...s-http-956656/
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 17/09/2012 a las 14:20