使用PHP从网页获取内容


Get Content from Web Pages with PHP

我正在做一个小项目,根据页面的HTML标记从几个网页中获取信息,但我根本不知道从哪里开始。

其基本思想是从<h1></h1>s获取标题,从<p></p>s标签获取内容以及所需的其他重要信息。

我必须从每个来源设置每个案例,使其以所需的方式工作。我相信right方法是在PHP中使用$_GET方法。该项目的目标是建立一个信息数据库。

获取我需要的信息的最佳方法是什么?

首先:PHP的$_GET不是一个方法。正如您在文档中所看到的,$_GET只是一个数组,它使用在当前查询期间收到的GET参数您的web服务器初始化。因此,它不是你想用来做这类事情的。

您应该研究的是cURL,它允许您编写甚至相当复杂的查询,发送到目标服务器并检索响应。例如,对于POST请求,您可以执行以下操作:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.mysite.com/tester.phtml");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
            "postvar1=value1&postvar2=value2&postvar3=value3");
// in real life you should use something like:
// curl_setopt($ch, CURLOPT_POSTFIELDS, 
//          http_build_query(array('postvar1' => 'value1')));
// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);

当然,如果您不必执行任何复杂的查询,而是执行简单的GET请求,那么您可以使用PHP函数file_get_contents

收到网页内容后,你必须对其进行解析。IMHO最好的方法是使用PHP的DOM函数。如何使用它们应该是另一个问题,但你可以毫不费力地找到大量的例子。

  <?php
 $remote = file_get_contents('http://www.remote_website.html');
 $doc = new DomDocument();
 $file = @$doc->loadHTML($remote);  
 $cells = @$doc->getElementsByTagName('h1');
 foreach($cells AS $cell)
 {

    $titles[] = $cell->nodeValue ;
}
 $cells = @$doc->getElementsByTagName('p');
foreach($cells AS $cell)
 {
    $content[] = $cell->nodeValue ;
}
 ?> 

您可以使用获取页面的HTML源代码

<?php
$html= file_get_contents('http://www.example.com/');
echo $html;
?>

然后,一旦你有了页面的结构,你就会得到带有substr()和strpos()的请求标签