Chcę pobrać kod HTML linku (strony internetowej) w PHP. Na przykład, jeśli link to
następnie chcę kod HTML wyświetlanej strony. Chcę pobrać ten kod HTML i zapisać go w zmiennej PHP.
Jak mogę to zrobić?
Chcę pobrać kod HTML linku (strony internetowej) w PHP. Na przykład, jeśli link to
następnie chcę kod HTML wyświetlanej strony. Chcę pobrać ten kod HTML i zapisać go w zmiennej PHP.
Jak mogę to zrobić?
Odpowiedzi:
Jeśli twój serwer PHP zezwala na otoki url fopen, najprostszym sposobem jest:
$html = file_get_contents('/programming/ask');
Jeśli potrzebujesz większej kontroli, powinieneś przyjrzeć się funkcjom cURL :
$c = curl_init('/programming/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);
Jeśli chcesz jakoś manipulować pobraną stroną, możesz spróbować parsera PHP DOM. Uważam, że PHP Simple HTML DOM Parser jest bardzo łatwy w użyciu.
Możesz chcieć sprawdzić biblioteki YQL z Yahoo: http://developer.yahoo.com/yql
Zadanie do wykonania jest tak proste, jak
select * from html where url = 'http://stackoverflow.com/questions/ask'
Możesz to wypróbować w konsoli pod adresem : http://developer.yahoo.com/yql/console (wymaga zalogowania)
Zobacz także screencast Chrisa Heilmanna, aby zobaczyć kilka fajnych pomysłów, co jeszcze możesz zrobić: http://developer.yahoo.net/blogs/theater/archives/2009/04/screencast_collating_distributed_information.html
Prosty sposób: Użyj file_get_contents()
:
$page = file_get_contents('http://stackoverflow.com/questions/ask');
Pamiętaj, że allow_url_fopen
musisz być true
w tobie, php.ini
aby móc używać opakowań fopen obsługujących adresy URL.
Bardziej zaawansowany sposób: jeśli nie możesz zmienić konfiguracji PHP, allow_url_fopen
jest to false
ustawienie domyślne i jeśli zainstalowane jest rozszerzenie / curl, użyj cURL
biblioteki, aby połączyć się z żądaną stroną.
spójrz na tę funkcję:
include_once('simple_html_dom.php');
$url="http://stackoverflow.com/questions/ask";
$html = file_get_html($url);
Możesz pobrać cały kod HTML jako tablicę (formę przeanalizowaną) za pomocą tego kodu Pobierz plik „simple_html_dom.php” tutaj http://sourceforge.net/projects/simplehtmldom/files/simple_html_dom.php/download
Oto dwa różne, proste sposoby pobierania treści z adresu URL :
1) pierwsza metoda
Włącz Allow_url_include na swoim hostingu (php.ini lub gdzieś)
<?php
$variableee = readfile("http://example.com/");
echo $variableee;
?>
lub
2) druga metoda
Włącz php_curl, php_imap i 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;
?>
możesz użyć metody DomDocument, aby uzyskać również indywidualną zmienną poziomu znacznika HTML
$homepage = file_get_contents('https://www.example.com/');
$doc = new DOMDocument;
$doc->loadHTML($homepage);
$titles = $doc->getElementsByTagName('h3');
echo $titles->item(0)->nodeValue;
Wypróbowałem ten kod i działa dla mnie.
$html = file_get_contents('www.google.com');
$myVar = htmlspecialchars($html, ENT_QUOTES);
echo($myVar);