我正在做一个小项目,根据页面的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()的请求标签