我想抓取一個網站使用PHP,CURL和POST方法,以便在網頁抓取頁面之前提交表單。我遇到的問題是使用POST方法連接:沒有數據提交給服務器,所以刮過的網頁不包含我在找的東西。CURL + POST + multipart/form-data
我不能確定問題與表單類型相關:enctype =「multipart/form-data」。 考慮到表單是multipart/form-data,我該如何管理這個POST請求? 我必須以特殊的方式編碼post_string嗎?
下面是我使用的代碼:
function curl($url) {
//POST string
$post_string="XXXX";
$options = Array(
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_FOLLOWLOCATION => TRUE,
CURLOPT_AUTOREFERER => TRUE,
CURLOPT_CONNECTTIMEOUT => 120,
CURLOPT_TIMEOUT => 120,
CURLOPT_MAXREDIRS => 10,
CURLOPT_USERAGENT => "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1a2pre) Gecko/2008073000 Shredder/3.0a2pre ThunderBrowse/3.2.1.8",
CURLOPT_URL => $url,
CURLOPT_CAINFO => dirname(__FILE__)."/cacert.pem",
CURLOPT_POSTFIELDS => $post_string,
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$data = curl_exec($ch);
curl_error($ch);
curl_close($ch);
return $data;
}
$scraped_page = curl("XXXURLXXX");
echo $scraped_page;
謝謝!
好, 我添加了這些行: CURLOPT_POST => TRUE, CURLOPT_POSTFIELDS => http_build_query($ postfields), 和充滿了你安裝後場,但它仍然不能正常工作:螢火蟲確認沒有執行POST ... – user3352382
Firebug不會顯示真正的POST,因爲這發生在PHP執行的「內部」,而不是在頁面的「輸出」內部。 在$ data = curl_exec($ ch)後添加以下內容到您的PHP中: ==> var_dump(curl_getinfo($ ch)); 然後看看會顯示什麼。 – KoalaBear
嗯,好的,謝謝,但是「回聲」的頁面仍然顯示空格,沒有結果。 – user3352382