簡體   English   中英

如何通過POST請求通過curl從外部網頁獲取數據

[英]How to obtain data from an external web page with curl through POST requests

以前,我已經編寫了一個代碼,可以查詢由GET發送給我的外部網頁,該網頁顯示了一個人的名字和姓氏。 該代碼運行良好,是這樣的:

      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發出請求。 我試圖使用與此處顯示的代碼相同的代碼,但是它引發了“找不到頁面”錯誤。

您能否提供一些代碼或有關如何解決此問題的信息來幫助我?

也許您可以嘗試使用捕獲工具(例如Fiddler。實際上是瀏覽器本身可以看到此信息)來捕獲本地端口與服務器之間的交互。

首先,您需要使用瀏覽器來完成登錄和查詢過程,然后可以清楚地看到瀏覽器與服務器交互的http / https數據信息。

接下來,您需要使用PHP代碼來模擬瀏覽器以提交登錄信息(例如服務器),然后獲取服務器返回的數據(此數據可能是一個會話值,通常存儲在瀏覽器的cookie中。)

接下來,您可以使用上面的CURL來獲取數據。 請記住攜帶服務器驗證所需的數據。 如果它是一個cookie,也許您可​​以這樣添加它:

curl_setopt($ch,CURLOPT_COOKIE,'cookie= XXXX ; cookie_type= YYYY;');

只要提供正確的數據和URL,就可以獲取所需的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM