作者davidou (老歐 ! 月夜雪嵐)
看板PHP
標題[請益] curl 抓網頁資料
時間Sun Jun 5 00:57:14 2011
我目前有個A網頁要抓 可是那個網頁必須要登入才可以抓
所以我變成要去B網頁 login 後 在到a網頁去抓
現在問題來了 我用curl登入B網頁後 在去撈A網頁 她又顯示沒登入了
怎會這樣勒
程式碼 (上面的curl 可以大略看看就好 因為我有登入成功了 主要是最後面)
網頁版 程式碼 (
http://dl.dropbox.com/u/3503352/new%20%205.txt)
應該會比較好讀
<?php
$loginData = array(
'username' => '帳號',
'password' => '密碼' );
$structData= array(
'url' => '
http://www.plurk.com/m/login',
'postFields' =>
'username='.urlencode($loginData['username']).'&password='.urlencode($loginData['password']),
'header' => 0,
'followLocation' => 1,
'cookiejar' => 'C:\coo.txt'
);
//
$ch = curl_init();
$options = array(
CURLOPT_URL => $structData['url'],
CURLOPT_POSTFIELDS => $structData['postFields'],
CURLOPT_POST => 1,
CURLOPT_HEADER => $structData['header'],
CURLOPT_FOLLOWLOCATION => $structData['followLocation'],
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_COOKIEJAR => $structData['cookiejar'],
CURLOPT_RETURNTRANSFER => $rr,
CURLOPT_USERAGENT => "Mozilla/5.0 (Windows; U; Windows NT 5.1;
en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3" );
curl_setopt_array($ch, $options);
$d = curl_exec($ch);
if(curl_errno($ch) == 0) file_put_contents("data.txt", $d);
// 產生 Cookie ,以便記住登入後的 Session
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'C:\cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'C:\cookie.txt');
curl_setopt($ch, CURLOPT_COOKIE, 'C:\cookie.txt');
//----- 讀取網頁源始碼
$fp = file_get_contents("
http://www.plurk.com/m/u/davidou123");
echo $fp;
?>
--
只有正妹的無名才有連結價值阿..
http://www.wretch.cc/blog/fancyou
非正妹 所以沒有連結價值
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.170.110.172
※ 編輯: davidou 來自: 218.170.110.172 (06/05 00:58)
1F:→ mp607:有現成的噗浪API可以用 06/05 00:58
3F:→ davidou:樓上 我知道 我有寫好過了 只是想寫另一種的 06/05 01:00
4F:推 mlwmlw:可以檢查看看 cookie 裡面有沒有資料 06/05 08:03
5F:→ mlwmlw:CURLOPT_COOKIEJAR 的路徑 為什麼要不一樣 06/05 08:04
6F:→ davidou:COOKIE 有資料 06/05 09:48
7F:推 mlwmlw:沒注意看… 你要兩次都用 curl ,才會用到登入的 cookie 喔 06/05 11:49
8F:→ mlwmlw:而且你這程式很怪 感覺拼湊出來的…流程不太對 06/05 11:50
9F:→ hSATAC:file_get_contents 不吃你 curl的 cookie吧? 06/05 12:02
10F:→ hSATAC:你第一個 file_get_contents 的用法也怪怪的 06/05 12:05
11F:→ hSATAC:建議你全部用 curl 重寫 06/05 12:06
12F:→ davidou:恩 沒錯 當時這只是拼湊出來的 所以沒吃到CURL的資料 06/05 22:34
13F:→ davidou:後來用兩個CURL 就解決了 06/05 22:34