如何在PHP中获取网页的HTML代码?

我想在PHP中检索链接(网页)的HTML代码。 例如,如果链接是

https://stackoverflow.com/questions/ask

那么我想要的服务页面的HTML代码。 我想检索这个HTML代码并将它存储在一个PHPvariables中。

我该怎么做?

如果你的PHP服务器允许url fopen包装,那么最简单的方法是:

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

如果你需要更多的控制,那么你应该看看cURL函数:

 $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); 

另外,如果你想操纵检索页面,你可能想尝试一些PHP DOMparsing器。 我发现PHP简单的HTML DOMparsing器非常容易使用。

您可能想要查看来自Yahoo的YQL库: http : //developer.yahoo.com/yql

手头的任务就像一样简单

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

你可以在控制台上试试这个: http : //developer.yahoo.com/yql/console (需要login)

另请参阅克里斯Heilmanns screencast一些不错的想法,你可以做更多: http : //developer.yahoo.net/blogs/theater/archives/2009/04/screencast_collat​​ing_distributed_information.html

简单的方法:使用file_get_contents()

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

请注意,您的php.ini中的allow_url_fopen必须为true ,才能使用URL感知的fopen包装。

更高级的方法:如果你不能改变你的PHPconfiguration, allow_url_fopen默认为false ,如果安装了ext / curl,使用cURL库连接到所需的页面。

 include_once('simple_html_dom.php'); $url="http://stackoverflow.com/questions/ask"; $html = file_get_html($url); 

您可以使用此代码将整个HTML代码作为数组(parsing的表单)下载“simple_html_dom.php”文件http://sourceforge.net/projects/simplehtmldom/files/simple_html_dom.php/download

你可以使用file_get_contents如果你想将源代码存储为variables,但是curl是一个更好的方法。

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

此解决scheme将在您的网站上显示网页。 然而,curl是一个更好的select。

以下是从URL获取内容的两种不同的简单方法

1)第一种方法

从您的托pipe(php.ini或其他地方)启用Allow_url_include

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

要么

2)第二种方法

启用php_curl,php_imap和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; ?>