我以前已经编写了一个代码,该代码使我可以查询由GET发送ID的外部网页,并向我显示一个人的姓名和姓氏。该代码非常有效,是这样:
function nome($id)
{
$url = 'https://www.dateas.com/es/consulta_cuit_cuil?name=&cuit='.$id;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER,array("Accept-Lenguage: es-es,es"));
curl_setopt($ch, CURLOPT_TIMEOUT,10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$html = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
preg_match_all('/<tr class="odd"><td><a href="(.*?)">/',$html ,$matches);
if (count($matches[1]) == 0)
{
$result = "Error in the server";
}
else if(count($matches[1]) == 1)
{
$result = $matches[1][0];
$result = str_replace('/es/persona/','', $result);
$result = substr($result, 0,-12);
$result = str_replace('-', ' ', $result);
$result = ucwords($result);
}
return $result;
}
$Name = nome($_GET['id']);
echo "<br><br>The name of the person is : ". $Name;
此代码运行良好,但现在我需要从另一个网站提取此信息,但要这样做,我必须先登录该网页,然后转到查询部分并输入ID,单击搜索按钮,然后然后页面返回该人的信息。该网站不是通过GET而是通过POST来请求搜索和显示人员信息。
我的问题是我不知道如何在此新页面中提取信息,因为我必须先登录然后寻找输入其ID的人,但是请求由POST处理。
如何通过CURL或任何其他PHP方法获取进行查询的人员的信息?
这是用于登录进行查询的网站的登录表单页面:http://buscardatos.com/Socios/ingresso.php
登录后,我们应该转到:http://www.buscardatos.com/Personas/DNI
有一个文本字段,在其中输入ID,然后通过单击搜索按钮显示此人的信息。
网站通过POST发出请求。我尝试使用与此处显示的代码相同的代码,但它抛出“找不到页面”错误。
能否请您提供一些代码或有关如何解决此问题的信息?
答案 0 :(得分:0)
也许您可以尝试使用捕获工具(例如Fiddler。)来捕获本地端口与服务器之间的交互。实际上,浏览器本身可以看到此信息。
首先,您需要使用浏览器来完成登录和查询过程,然后可以清楚地看到浏览器与服务器交互的http / https数据信息。
接下来,您需要使用PHP代码来模拟浏览器以提交登录信息(例如服务器),然后获取服务器返回的数据(该数据可能是会话值,通常存储在浏览器的cookie中。 )
接下来,您可以使用上面的CURL来获取数据。请记住携带服务器验证所需的数据。如果它是cookie,也许您可以这样添加它:
curl_setopt($ch,CURLOPT_COOKIE,'cookie= XXXX ; cookie_type= YYYY;');
只要提供正确的数据和URL,就可以获取所需的数据。