Jamyy's Weblog

Retrieving remote HTML content

by Jamyy on 二月.10, 2006, under Coding

  • Snoopy - a nice html retriever / parser
  • 假日、某個時間過後就停止執行 Shell Script 的判斷式
  • 利用簡單資料庫達到分工下載目的

Snoopy - a nice html retriever / parser

Sourceforge.net: Snoopy

vi html_retriever.php

    #!/usr/bin/php
    <?php

            include "Snoopy.class.php";
            $snoopy = new Snoopy;

            $snoopy->agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"; //讓 web server 以為是 IE6 在瀏覽網頁

            $snoopy->fetchtext("url"); //只取出網頁內容, 剔除所有 HTML Tag

            print $snoopy->results;

    ?>

chmod 777 html_retriever.php
./html_retriever.php > output.txt

Reference: Snoopy README

ps. PHP 檔頭加上: #!/usr/bin/php, 再讓 PHP 檔案擁有執行權限就能讓 PHP 程式在 console 執行

假日、某個時間過後就不執行 Shell Script 的判斷式

  • 超過 18:30 就不執行 Shell Script: [ "`date +%H%M`" -gt "1830" ] && exit
  • 星期六日不執行 Shell Script: [ "$[`date +%w`%6]" == "0" ] && exit
  • 假日不執行 Shell Script: [ "`grep $(date +%Y%m%d) holiday.txt`" ] && exit

vi holiday.txt

20060101	中華民國開國紀念日
20060126	春節
20060127	春節
20060130	春節
20060131	春節
20060201	春節
20060202	春節
20060228	和平紀念日
20060405	民族掃墓節
20060501	勞動節
20060531	端午節
20061006	中秋節
20061010	國慶日

利用簡單資料庫達到分工下載目的

利用多台 Un*x 環境的 Shell Script 同時下載 "同一站台不同參數" 的遠端網頁資料

Server 需求: Web Server + 伺服端動態網頁程式 + 資料庫 + 常駐的資料處理程序

資料庫表格:

queue_id          char(4)
//給 Client 端的資料

process_flag     bit //是否已給
Client 資料, 是=1 否=0

retrieve_time    smalldatetime //給
Client 端資料的時間

Client 需求: Un*x Shell + wget、ftp command

流程:

Step Client Server
1 向 Server 取得 queue_id (觸發 Server 端的動態網頁程式) select queue_id from mytable where process_flag = 0 order by retrieve_time;
update mytable set process_flag = 1 where queue_id = 'gived_queue_id';
丟給 Client 最舊的 queue_id
2 將 queue_id 與目的 URL 組合後, 下載目的資料
3 傳回目的資料 常駐程序處理傳回資料
update mytable set process_flag = 0 where queue_id = 'returned_queue_id';
將已處理完畢的 process_flag 再設為 0, 讓 Client 可再重新擷取此 queue_id

相關網頁:



:,