我正在开发一个小项目,根据页面的HTML标记从多个网页获取信息,我不知道从哪里开始。
基本思路是从<h1></h1>s
获取标题,从<p></p>s
标记获取内容以及所需的其他重要信息。
我必须从每个来源设置每个案例,以便它以所需的方式工作。我相信正确的方法正在使用PHP的$_GET
方法。该项目的目标是建立一个信息数据库。
获取我需要的信息的最佳方法是什么?
答案 0 :(得分:0)
首先:PHP's $_GET is not a method。正如您在文档中看到的那样,$ _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
收到网页内容后,您必须解析它。恕我直言,最好的方法是使用PHP's DOM functions。如何使用它们应该是另一个问题,但你可以毫不费力地找到大量的例子。
答案 1 :(得分:0)
<?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 ;
}
?>
答案 2 :(得分:-1)
您可以使用以下命令获取网页的HTML源代码:
<?php
$html= file_get_contents('http://www.example.com/');
echo $html;
?>
然后,一旦你了解了页面的结构,就会得到带有substr()和strpos()的请求标签