2013年10月1日 星期二

《am730》剪報

am730 Old Issues

am730 也是其中一家能找到自己舊報章的數碼版,日子可追索到 2005 年 7 月 30 日。今次抓取的也是網頁版圖檔。

網頁版的構造很特別,它不像《頭條日報》的圖還圖、字還字。全是 JPG 格式,而且還最多把一頁分成十六個 JPG 檔,不用一次過提取大面積的連續記憶體空間,減輕設備的負荷。下載頁面的步驟如下:
  • 打開 Wireshark 並擷取自己電腦的資料進出
  • 打開瀏覽器並跳到《am730》官網
  • 打開想要的報章及報導的頁面
  • 停止 Wireshark 的記錄
  • 找查日期數字,如「20130418」便很容易找到報頁的連結
  • 在連結中最後的數字是格仔編號,由 0 開始
  • 如果是 4x4 劃分的頁面,最大是 15 號

    不過,要手動逐個 JPG 下載,又要把 16 張圖合拼,實在很花時間。這種工作最適合電腦來做。於是簡單寫了個 PHP 來達成,方便在任何地方都能使用。下載方面用 file_get_contents 及 file_put_contents 就可以。以下是把 JPG 合拼的部份:
     $newspaperDate = "20130418";
     $blockHeight = 590;
     $blockWidth = 462;
     $folder = "__files__/";
     $height = $blockHeight*4;
     $width = $blockWidth*4;
    
     //  Merge 4x4 images to single PNG
     $x = 0;  $y = 0;
     $image = imagecreatetruecolor($width, $height);
     for ($i=0; $i<16; $i++)  {
    
      $filename = $newspaperDate."_am730_p".$page."-".$i.".jpg";
      $filePath = $folder.$filename;
      $blockImage = imagecreatefromjpeg($filePath);
      if ($blockImage === false)  {
       echo("<br>Error loading image block $filePath...skip");
       continue;
      }
    
      //  Draw block image to big image
      imagecopy($image, $blockImage, $x, $y, 0, 0, $width, $height);
      imagedestroy($blockImage);
    
      $x += $blockWidth;
      if (($i%4) == 3)  {
       $x = 0;
       $y += $blockHeight;
      }
     }
    
     //  Save PNG image of whole page
     $filename = $newspaperDate."_am730_p".$page.".png";
     $filePath = $folder.$filename;
     imagepng($image, $filePath);
     imagedestroy($image);
     echo("<br><img src='$filePath'>");
  • 沒有留言: