訓練家的佈弱格-Patch1.2

The BLOG of trainer



編輯日期:2015-02-03 10:23

類型:網頁設計心得
作者:羽山
文章時間:2015-02-03 10:23:12
瀏覽人數:3463人
標題: 使用 PHP 取得衛星資料站查詢結果
網址:https://3wa.tw/blog/blog.php?id=1443
內容:
 

今天有個需求是要針對此網站模擬查詢資料:http://ladsweb.nascom.nasa.gov/data/search.html


以上是查詢前的內容。


這個畫面,是希望利用程式的方式取得查詢後的內容!

經由送出的條件,我們可以在 Firefox 、Chrome、IE 按 F12 查看網路傳輸資料。

在網路的頁籤,可以看到傳輸的資料,打開「POST search.html」

在「標頭頁」通常你要注意:
1、網址列,即按右鍵,複製網址。
2、「Cookie」,有些網站會檢查此使用者是否經合理的管道進行查詢
所以有時需要偽造 Cookie ,或是先用程式送出 GET、POST 抓取網站特定頁,將 Cookie 載回 Cookie jar,接下來的查詢,繼續使用
Cookie jar 的內容。


接下來,看 Post 頁,代表程式在上一個頁面時的表單「Form」實際對此 Search.html 頁送出了哪些內容!

接下來就可以開始撰寫模式查詢小程式:
<?php
include '../inc/conn.php';
include '../inc/include.php'; // 偷偷藏一些暗步,不告訴你們 XD

//網址
$URL="http://ladsweb.nascom.nasa.gov/data/search.html";
//POST的內容
$POST=ARRAY();
$POST['__PREV_form']='AADS';
$POST['form']='AADS';
$POST['orderState']='';
$POST['scrollX']='0';
$POST['scrollY']='1125';
$POST['title']='Search for Data Products';
$POST['si']='Terra MODIS';
$POST['group']='Terra Level 1 Products';
$POST['prodSelect']='0';
$POST['products']='MOD01';
$POST['temporal_type']='RANGE';
$POST['startTime']='01/01/2015 00:00:00';
$POST['endTime']='02/02/2015 23:59:59';
$POST['archiveSet']='6';
$POST['__PREV_coordinate_system']='LAT_LON';
$POST['coordinate_system']='LAT_LON';
$POST['__PREV_bboxType']='NWES';
$POST['bboxType']='NWES';
$POST['bb_top']='29';
$POST['bb_left']='109';
$POST['bb_right']='129';
$POST['bb_bottom']='9';
$POST['coverageOptions']='D';
$POST['PGEVersion']='';
$POST['filterPGEVersion']='No';
$POST['startQAPercentMissingData']='0.0';
$POST['endQAPercentMissingData']='100.0';
$POST['filterQAPercentMissingData']='No';
$POST['fileName']='';
$POST['Submit']='Search';

//初次先對 URL 送一次空的查詢,然後將 Cookie 存回自己指定的 Cookie jar
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $URL);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_COOKIEJAR, "/tmp/cookie.txt"); //保存cookie
curl_setopt($curl, CURLOPT_COOKIEFILE, "/tmp/cookie.txt"); //讀取cookie
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
//在暫存區進行 output
ob_start();
curl_exec($curl);
$data=ob_get_contents();
ob_end_clean();

//打開 Cookie jar,看看裡面裝什麼,因為已知有個 LAADS 好像很重要

//實際去看 /tmp/cookie.txt
//內容如下


/*
Cookie jar 的內容很多,所以先取我們要用的內容,也就是組成:

LAADS=ba852363981945a1b1214067f8b4f345
*/

$c = file_get_contents("/tmp/cookie.txt");
$c = explode('LAADS',$c);
$c = "LAADS=".trim($c[1]);

// 接下來就是真正的查詢了~
// 在 header 中包入 Cookie: LAADS=ba852363981945a1b1214067f8b4f345
// 而 POST 是放在 content 裡,可以利用 php 的 http_build_query 自動幫你組成 key1=value1&key2=value2&...
$opts = stream_context_create(array (
'http'=>array(
'method'=>"POST",
'header'=>"Content-type: application/x-www-form-urlencoded\r\n".
"Cookie: {$c}",
'content'=>(is_array($POST))?http_build_query($POST):$POST
)
));

// 直接印出查詢後的結果
echo file_get_contents($URL,false,$opts);


於是很成功的得到了查詢的結果~~~

打完收工!

首頁  上十頁  上一頁  1 下一頁    最末頁 (總共有...1頁)

第 1 頁

有話要說  看留言 【0】
其他分類
當月訓練
(2015-02-22)
【網頁設計心得】倒數計時按鈕

(2015-02-03)
【網頁設計心得】使用 PHP 取得衛星資料站查詢結果

最新訓練
(2024-03-09)
【HONDA CBR1000RR】CBR1000RR 原廠管

(2024-02-24)
【NSR 150】NSR150 整理後卡鉗

(2024-02-14)
【機車綜合相關】買了牧田的打氣機與心得

(2024-02-10)
【NSR 150】NSR150 整流器接頭重作

(2024-02-09)
【機車綜合相關】鋰電、鋰鐵電池、電源充電器

(2024-01-07)
【NSR 150】NSR150 貨架耳朵斷裂維修

(2024-01-06)
【KTM 390】KTM Duke390 維修發電問題 電盤內仁

(2023-12-29)
【NSR 150】NSR150 改可調拉桿

(2023-11-20)
【遊戲 / 生活】防盜洗手罐

(2023-11-17)
【KTM 390】KTM Duke390 製作鋰鐵電池