※ 引述《jami520 (我的生命因你而发光)》之铭言:
: 单纯点选网址可以正常看到资讯 http://goo.gl/v9Yr5r
: 但使用curl并没有任何数据显示,不晓得是哪边的问题呢? 谢谢
: $c = curl_init();
: curl_setopt($c, CURLOPT_URL,
: "http://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_3008.tw|tse_2330.
: tw&json=1&delay=0&d=20151006");
: curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
: $timeout = 15;
: curl_setopt($c, CURLOPT_CONNECTTIMEOUT, $timeout);
: $data = curl_exec($c);
: curl_close($c)
: echo $data;
试了半天试出来了~
<?php
$ch = curl_init();
$url =
"http://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_3008.tw|tse_2330.tw&json=1&delay=0&d=20151006";
//网址的最后建议可以加上 &_t=".time()
//短时间连送三次同一个网址会停掉
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FOLLOWLOCATION => 1, // 连1都能work就代表你成功了
CURLOPT_VERBOSE => 0
));
//以下 header 必需照抄,乱来会失败,参考自 firefox (f12档头)
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Host: mis.twse.com.tw',
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101
Firefox/41.0',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: zh-TW,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding: gzip, deflate',
'Cookie: JSESSIONID=DA7F410960A1BDFBE36947007403F24B;
JSESSIONID=6E6AD946C7DA0BAEE4AF3FC9BBB15B2C',
'Connection: keep-alive',
'Cache-Control: max-age=0'
));
$response = curl_exec($ch);
//curl_close($ch);
echo gzdecode( $response);
//稍微有点难度,主要应该还是在header的内容
//curl 默认的顺序还是内容总之就是不行,此内容直接照抄 firefox 里
//的,就正常可以过
//最后取到的是 gzip 的 binary ,利用 gzdecode 反解可得 json
//比较需要调整的部分也许是 Cookie的内容,也许要
//大量抓取时,先把CURLOPT_FOLLOWLOCATION 设成 0,不要被302卡页
//偷到第一次cookie 后,之后就用偷来的 cookie 浏览
//上面范例是写死的,点出来即可 XD
以下是实作
[root@3wa tw]# php t.php
{"msgArray":[{"ts":"0","fv":"2","tk0":"3008.tw_tse_20151006_B_9999200852","tk1":"3008.tw_tse_20151006_B_9999180800","oa":"2675.00","ob":"2670.00","tlong":"1444113000000","ot":"14:30:00","f":"9_11_5_24_37_","ex":"tse","g":"5_2_12_45_15_","ov":"4811","d":"20151006","it":"12","b":"2690.00_2685.00_2680.00_2670.00_2665.00_","c":"3008","mt":"000000","a":"2695.00_2700.00_2705.00_2710.00_2715.00_","n":"
大立光
","o":"2580.00","l":"2580.00","oz":"2670.00","h":"2715.00","ip":"0","i":"26","w":"2235.00","v":"2226","u":"2725.00","t":"13:30:00","s":"111","pz":"2690.00","tv":"111","p":"0","nf":"
大立光电股份有限公司
","ch":"3008.tw","z":"2690.00","y":"2480.00","ps":"109"},{"ts":"0","fv":"15","tk0":"2330.tw_tse_20151006_B_9999200681","tk1":"2330.tw_tse_20151006_B_9999180890","oa":"133.00","ob":"132.50","tlong":"1444113000000","ot":"14:30:00","f":"899_1413_2172_2113_2051_","ex":"tse","g":"1476_4939_3254_3619_267_","ov":"13004","d":"20151006","it":"12","b":"132.50_132.00_131.50_131.00_130.50_","c":"2330","mt":"000000","a":"133.00_133.50_134.00_134.50_135.00_","n":"
台积电
","o":"135.00","l":"132.50","oz":"132.50","h":"135.50","ip":"0","i":"24","w":"119.50","v":"48613","u":"145.50","t":"13:30:00","s":"3859","pz":"133.00","tv":"3859","p":"0","nf":"
台湾积体电路制造股份有限公司
","ch":"2330.tw","z":"133.00","y":"132.50","ps":"3728"}],"userDelay":5000,"rtmessage":"OK","referer":"","queryTime":{"sysTime":"22:55:04","sessionLatestTime":1444113000000,"sysDate":"20151006","sessionKey":"tse_3008.tw_20151006|tse_2330.tw_20151006|","sessionFromTime":1444113000000,"stockInfoItem":1119,"showChart":false,"sessionStr":"UserSession","stockInfo":119245},"rtcode":"0000"}[root@3wa
tw]#