» 您尚未 登錄   註冊 | 幫助 | 社區 | 無圖版


腦友記廣場 -> 新手上路 -> 想用php capture網頁資料,但對方網頁用cookies control
 XML   RSS 2.0   WAP 

--> 本頁主題: 想用php capture網頁資料,但對方網頁用cookies control 加為IE收藏 | 收藏主題 | 上一主題 | 下一主題
rickywk





級別: 新手上路
精華: 0
發帖: 42
威望: 43 點
金錢: 416 HKD
貢獻值: 0 點
註冊時間:2006-04-23
最後登錄:2013-12-17
查看作者資料 發送短消息 推薦此帖 引用回復這個帖子

想用php capture網頁資料,但對方網頁用cookies control

http://www.speedpost.com.sg/index.asp

我pass "CC903340334SG"入去,就會return返個shipment status,但我發覺佢個page唔單止要pass parameters,連cookies都要認埋先會accept個query...

咁係唔係無計capture佢個result page?

[樓 主] | Posted: 2011-01-25 14:35 頂端
rickywk





級別: 新手上路
精華: 0
發帖: 42
威望: 43 點
金錢: 416 HKD
貢獻值: 0 點
註冊時間:2006-04-23
最後登錄:2013-12-17
查看作者資料 發送短消息 推薦此帖 引用回復這個帖子



試用snoopy class,但見到source code有兩張form,應該點submit?
[1 樓] | Posted: 2011-01-26 23:44 頂端
maninnet



級別: 管理員
精華: 0
發帖: 1903
威望: 1903 點
金錢: 19030 HKD
貢獻值: 0 點
註冊時間:2005-12-22
最後登錄:2017-10-26
查看作者資料 發送短消息 推薦此帖 引用回復這個帖子



snoopy 用 cookie 的方法, 可參考生果日報 art_main.php
snoopy->rawheaders["COOKIE"]="cookie 內容";
如何取得 cookie 內容, 可以用最簡單方法, 用 ie 打開網頁, 在網址輸入:
javascript:document.write(document.cookie)
我得到的是:
ASPSESSIONIDSQCQSTDR=BKLDPFIDNOFKLDJPFLEHLOBA; __utmc=11004790; __utma=11004790.705305129.1297083281.1297083281.1297083281.1; __utmb=11004790.3.10.1297083281; __utmz=11004790.1297083281.1.1.utmcsr=elife.maninnet.com|utmccn=(referral)|utmcmd=referral|utmcct=/read.php

[2 樓] | Posted: 2011-02-07 21:11 頂端
rickywk





級別: 新手上路
精華: 0
發帖: 42
威望: 43 點
金錢: 416 HKD
貢獻值: 0 點
註冊時間:2006-04-23
最後登錄:2013-12-17
查看作者資料 發送短消息 推薦此帖 引用回復這個帖子



Thx!!
最後用curl解決,curl同snoopy各有千秋

但而家o係regular expression上有o的難攪,本來用eregi都handle大部份問題,忽然發現eregi將會從php function中刪除(php v6後),有人提議用preg match,但用極都用唔到

例如我想抽一個table出o黎:
preg_match('#<td width="250" colspan="2" valign="top">(.*)</font></td>#',$content,$content_ref);

$content_ref係吉o既,攪標都攪唔掂,有冇好提議?

[3 樓] | Posted: 2011-02-08 16:32 頂端
maninnet



級別: 管理員
精華: 0
發帖: 1903
威望: 1903 點
金錢: 19030 HKD
貢獻值: 0 點
註冊時間:2005-12-22
最後登錄:2017-10-26
查看作者資料 發送短消息 推薦此帖 引用回復這個帖子



仍是用生果日報 art_main.php 作例子:
preg_match("/id=\"articleTitle\"\>(.*?)\<img src=\"images\/art_end.gif\"/is",$snoopy->results,$matches);
$contents = $matches[1];

perl 採用 / 包圍參數.

preg_match('/#\<td width=\"250\" colspan=\"2\" valign=\"top\"\>(.*)\<\/font\>\<\/td\>/is',$content,$content_ref);

結果放在 $content_re[1] 內

[4 樓] | Posted: 2011-02-09 07:22 頂端
rickywk





級別: 新手上路
精華: 0
發帖: 42
威望: 43 點
金錢: 416 HKD
貢獻值: 0 點
註冊時間:2006-04-23
最後登錄:2013-12-17
查看作者資料 發送短消息 推薦此帖 引用回復這個帖子



QUOTE:
引用第4樓maninnet2011-02-09 07:22發表的「」:
仍是用生果日報 art_main.php 作例子:
preg_match("/id="articleTitle">(.*?)<img src="images/art_end.gif"/is",$snoopy->results,$matches);
$contents = $matches[1];

perl 採用 / 包圍參數.
.......

但當嘗試output o既時候,會出這個error:
Notice: Undefined offset: 1

CODE:


preg_match('/#\<table width=\"100%\" border=\"0\" mm_noconvert=\"TRUE\" cellspacing=\"2\" cellpadding=\"1\" \>(.*)\<\/table\>/is',$content,$table_id);


都唔知佢拎唔拎到


[ 此貼被rickywk在2011-02-10 09:57重新編輯 ]

[5 樓] | Posted: 2011-02-10 09:41 頂端
maninnet



級別: 管理員
精華: 0
發帖: 1903
威望: 1903 點
金錢: 19030 HKD
貢獻值: 0 點
註冊時間:2005-12-22
最後登錄:2017-10-26
查看作者資料 發送短消息 推薦此帖 引用回復這個帖子



perl 的保留字元, 要加 \ , 經常加漏. 試試:

preg_match('/\#\<td width=\"250\" colspan=\"2\" valign=\"top\"\>(.*)\<\/font\>\<\/td\>\#/is',$content,$content_ref);

echo($content_ref[1];

[6 樓] | Posted: 2011-02-10 12:55 頂端
rickywk





級別: 新手上路
精華: 0
發帖: 42
威望: 43 點
金錢: 416 HKD
貢獻值: 0 點
註冊時間:2006-04-23
最後登錄:2013-12-17
查看作者資料 發送短消息 推薦此帖 引用回復這個帖子



QUOTE:
引用第6樓maninnet2011-02-10 12:55發表的「」:
perl 的保留字元, 要加 , 經常加漏. 試試:

preg_match('/#<td width="250" colspan="2" valign="top">(.*)</font></td>#/is',$content,$content_ref);

echo($content_ref[1];

都係出:
Notice: Undefined offset: 1
完全唔知衰乜

[7 樓] | Posted: 2011-02-10 14:55 頂端
maninnet



級別: 管理員
精華: 0
發帖: 1903
威望: 1903 點
金錢: 19030 HKD
貢獻值: 0 點
註冊時間:2005-12-22
最後登錄:2017-10-26
查看作者資料 發送短消息 推薦此帖 引用回復這個帖子



沒有裝 php v6, 你試下用 php v6 可唔可以 run 到我果個生果日報?
如果唔得, 就係 preg_match 有所改動.

[8 樓] | Posted: 2011-02-11 09:57 頂端
rickywk





級別: 新手上路
精華: 0
發帖: 42
威望: 43 點
金錢: 416 HKD
貢獻值: 0 點
註冊時間:2006-04-23
最後登錄:2013-12-17
查看作者資料 發送短消息 推薦此帖 引用回復這個帖子



睇漏了一個?(問號),問題暫時解決!
[9 樓] | Posted: 2011-02-11 12:13 頂端
rickywk





級別: 新手上路
精華: 0
發帖: 42
威望: 43 點
金錢: 416 HKD
貢獻值: 0 點
註冊時間:2006-04-23
最後登錄:2013-12-17
查看作者資料 發送短消息 推薦此帖 引用回復這個帖子



又有問題,我想match一個table cell裡面o既data,佢只係拎到頭兩個就無再拎
CODE:

preg_match_all("/\<td width=\"153\" valign=\"top\" bgcolor=\"\#EEEEEE\" height=\"25\"\>(.*?)\<\/td\>/is",$content,$table_id);

$count_id = 0;

foreach ($table_id as $val_id)
{
echo $val_id[$count_id] ;
$count_id ++;
}

[10 樓] | Posted: 2011-02-11 15:41 頂端
rickywk





級別: 新手上路
精華: 0
發帖: 42
威望: 43 點
金錢: 416 HKD
貢獻值: 0 點
註冊時間:2006-04-23
最後登錄:2013-12-17
查看作者資料 發送短消息 推薦此帖 引用回復這個帖子



Post 埋對家o既html code先:
CODE:

                    <td width="89" valign="top" bgcolor="#EEEEEE" height="25">
                       <div align="left"><font face="Arial, Helvetica, sans-serif" >
                        07/02/2011 12:20
                        </font></div>

                    </td>
                    <td width="121" bgcolor="#EEEEEE" valign="top" height="25">
                       <div align="left"><font face="Arial, Helvetica, sans-serif" >                           </font></div>
                    </td>
                    <td width="153" valign="top" bgcolor="#EEEEEE" height="25">
                       <div align="left"><font face="Arial, Helvetica, sans-serif" >
                       
                        </font><font face="Arial, Helvetica, sans-serif" >Unsuccessful Delivery                           </font><font face="Arial, Helvetica, sans-serif" >
                       
                        </font></div>
                    </td>

[11 樓] | Posted: 2011-02-11 18:23 頂端

腦友記廣場 -> 新手上路




Powered by PHPWind v4.0.1 Code © 2003-05 PHPWind
You can contact us