webentwicklung-frage-antwort-db.com.de

Wie bekomme ich den HTML-Code einer Webseite in PHP?

Ich möchte den HTML-Code eines Links (Webseite) in PHP abrufen. Zum Beispiel, wenn der Link ist 

https://stackoverflow.com/questions/ask

dann möchte ich den HTML-Code der Seite, die geliefert wird. Ich möchte diesen HTML-Code abrufen und in einer Variablen PHP speichern.

Wie kann ich das machen?

73
Prashant

Wenn Ihr PHP Server URL-fopen-Wrapper zulässt, ist der einfachste Weg:

$html = file_get_contents('http://stackoverflow.com/questions/ask');

Wenn Sie mehr Kontrolle benötigen, sollten Sie sich die Funktionen cURL ansehen:

$c = curl_init('http://stackoverflow.com/questions/ask');
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
//curl_setopt(... other options you want...)

$html = curl_exec($c);

if (curl_error($c))
    die(curl_error($c));

// Get the status code
$status = curl_getinfo($c, CURLINFO_HTTP_CODE);

curl_close($c);
112
Greg

Auch wenn Sie die abgerufene Seite irgendwie manipulieren möchten, können Sie einen PHP-DOM-Parser ausprobieren. Ich finde PHP Simple HTML DOM Parser sehr einfach zu bedienen.

19
Dmitri

Möglicherweise möchten Sie die YQL-Bibliotheken von Yahoo auschecken: http://developer.yahoo.com/yql

Die Aufgabe ist so einfach wie

select * from html where url = 'http://stackoverflow.com/questions/ask'

Sie können dies in der Konsole unter folgender Adresse ausprobieren: http://developer.yahoo.com/yql/console (Anmeldung erforderlich)

Sehen Sie auch Chris Heilmanns Screencast für einige nette Ideen, was Sie noch tun können: http://developer.yahoo.net/blogs/theater/archives/2009/04/screencast_collating_distributed_information.html

12
Ickmund

Einfache Möglichkeit: Verwenden Sie file_get_contents() :

$page = file_get_contents('http://stackoverflow.com/questions/ask');

Bitte beachten Sie, dass allow_url_fopentrue in Ihnen php.ini sein muss, um URL-fähige fopen-Wrapper verwenden zu können.

Fortgeschrittener Weg: Wenn Sie Ihre PHP -Konfiguration nicht ändern können, ist allow_url_fopen standardmäßig false und wenn ext/curl installiert ist, verwenden Sie die cURL library , um die gewünschte Seite aufzurufen.

9
Stefan Gehrig

sie können file_get_contents verwenden, wenn Sie die Quelle als Variable speichern möchten. Curl ist jedoch eine bessere Methode. 

$url = file_get_contents('http://example.com');
echo $url; 

diese Lösung zeigt die Webseite auf Ihrer Website an. Curl ist jedoch eine bessere Option. 

2
piglot
2
Sergei

Hier sind zwei verschiedene einfache Möglichkeiten, um Inhalt von URL abzurufen:

1) die erste Methode

Aktivieren Sie Allow_url_include von Ihrem Hosting (php.ini oder irgendwo)

<?php
$variableee = readfile("http://example.com/");
echo $variableee;
?> 

oder 

2) die zweite Methode

Aktivieren Sie php_curl, php_imap und php_openssl

<?php
// you can add anoother curl options too
// see here - http://php.net/manual/en/function.curl-setopt.php
function get_dataa($url) {
  $ch = curl_init();
  $timeout = 5;
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
  curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}

$variableee = get_dataa('http://example.com');
echo $variableee;
?>
1
T.Todua
include_once('simple_html_dom.php');
$url="http://stackoverflow.com/questions/ask";
$html = file_get_html($url);

Sie können den gesamten HTML-Code als Array (geparstes Formular) mit diesem Code abrufen Downloaden Sie die Datei 'simple_html_dom.php' hier http://sourceforge.net/projects/simplehtmldom/files/simple_html_dom. php/download

1
sarath

mit der DomDocument-Methode können Sie auch eine individuelle Variable auf HTML-Tag-Ebene abrufen 

$homepage = file_get_contents('https://www.example.com/');
$doc = new DOMDocument;
$doc->loadHTML($homepage);
$titles = $doc->getElementsByTagName('h3');
echo $titles->item(0)->nodeValue;