iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 15
0
Modern Web

寫給PHP開發者的30堂網路爬蟲開發系列 第 15

Day 15:案例研究 2-1 實做指定年度課程綱要網站爬蟲

前言

從昨天可以得知,可以得知每個年度所對應到的課程綱要網站連結,那我們拿108年度課程綱要連結為例子,來做實做爬蟲的目標網站。

實做

首先,我們拿的是這個網站

接著按照之前分析的方式,把所有的td標籤擷取過一遍,得到的程式碼在下方:

<?php

require_once __DIR__ . '/vendor/autoload.php';

use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;

$latestNews = 'https://aa.nttu.edu.tw/p/412-1002-8645.php?Lang=zh-tw';
$client = new Client();
$response = $client->request('GET', $latestNews);

$courseOutlineString = (string)$response->getBody();

$columnStrings = [];

$crawler = new Crawler($courseOutlineString);

$crawler
    ->filter('td')
    ->reduce(function (Crawler $node, $i) {
        global $columnStrings;
        $columnStrings[] = $node->text();
    });

var_dump($columnStrings);

那這樣輸出就是所有的td中的標題了,得到輸出結果如下:

array(121) {
  [0]=>
  string(86) "
國立臺東大學 108學年度  課程綱要
〈108學年度入學學生適用〉
"
  [1]=>
  string(89) "
全校課程總綱 
〈含全校課程架構、實施要點、科目碼編號原則〉
"
  [2]=>
  string(22) "
通識教育課程 
"
  [3]=>
  string(14) "
師範學院
"
  [4]=>
  string(14) "
人文學院
"
  [5]=>
  string(14) "
理工學院
"
  [6]=>
  string(26) "
師範學院課程架構
"
  [7]=>
  string(2) "

"
  [8]=>
  string(26) "
人文學院課程架構
"
  [9]=>
  string(2) "

"
  [10]=>
  string(26) "
理工學院課程架構
"
  [11]=>
  string(2) "

"
  [12]=>
  string(20) "
專業教育課程
"
  [13]=>
  string(2) "

"
  [14]=>
  string(14) "
音樂學系
"
  [15]=>
  string(2) "

"
  [16]=>
  string(17) "
應用數學系
"
  [17]=>
  string(2) "

"
  [18]=>
  string(14) "
教育學系
"
  [19]=>
  string(2) "

"
  [20]=>
  string(23) "
音樂學系碩士班
"
  [21]=>
  string(2) "

"
  [22]=>
  string(20) "
資訊管理學系
"
  [23]=>
  string(2) "

"
  [24]=>
  string(37) "
教育學系-
教育研究碩士班
"
  [25]=>
  string(2) "

"
  [26]=>
  string(20) "
英美語文學系
"
  [27]=>
  string(2) "

"
  [28]=>
  string(29) "
資訊管理學系碩士班
"
  [29]=>
  string(2) "

"
  [30]=>
  string(40) "
教育學系-
課程與教學碩士班
"
  [31]=>
  string(2) "

"
  [32]=>
  string(17) "
華語文學系
"
  [33]=>
  string(2) "

"
  [34]=>
  string(20) "
資訊工程學系
"
  [35]=>
  string(2) "

"
  [36]=>
  string(37) "
教育學系-
教育研究博士班
"
  [37]=>
  string(2) "

"
  [38]=>
  string(26) "
華語文學系碩士班
"
  [39]=>
  string(2) "

"
  [40]=>
  string(17) "
生命科學系
"
  [41]=>
  string(2) "

"
  [42]=>
  string(14) "
體育學系
"
  [43]=>
  string(2) "

"
  [44]=>
  string(20) "
美術產業學系
"
  [45]=>
  string(2) "

"
  [46]=>
  string(26) "
生命科學系碩士班
"
  [47]=>
  string(2) "

"
  [48]=>
  string(23) "
體育學系碩士班
"
  [49]=>
  string(2) "

"
  [50]=>
  string(41) "
身心整合與運動休閒產業學系
"
  [51]=>
  string(2) "

"
  [52]=>
  string(42) "
應用科學系
化學及奈米科學組
"
  [53]=>
  string(2) "

"
  [54]=>
  string(20) "
幼兒教育學系
"
  [55]=>
  string(2) "

"
  [56]=>
  string(45) "
兒童文學研究所
(碩、博士班)
"
  [57]=>
  string(2) "

"
  [58]=>
  string(33) "
應用科學系
應用物理組
"
  [59]=>
  string(2) "

"
  [60]=>
  string(29) "
幼兒教育學系碩士班
"
  [61]=>
  string(2) "

"
  [62]=>
  string(29) "
公共與文化事務學系
"
  [63]=>
  string(2) "

"
  [64]=>
  string(26) "
應用科學系碩士班
"
  [65]=>
  string(2) "

"
  [66]=>
  string(33) "幼兒教育學系原住民專班"
  [67]=>
  string(0) ""
  [68]=>
  string(57) "
公共與文化事務學系
公共事務研究碩士班
"
  [69]=>
  string(0) ""
  [70]=>
  string(42) "
綠色與資訊科技
學士學位學程
"
  [71]=>
  string(0) ""
  [72]=>
  string(70) "
 幼兒教育學系學士後第二專長學位學程教保員專班
"
  [73]=>
  string(0) ""
  [74]=>
  string(57) "
公共與文化事務學系
南島文化研究碩士班
"
  [75]=>
  string(0) ""
  [76]=>
  string(45) "
高齡健康與護理管理
原住民專班
"
  [77]=>
  string(0) ""
  [78]=>
  string(20) "
特殊教育學系
"
  [79]=>
  string(2) "

"
  [80]=>
  string(5) "
 

"
  [81]=>
  string(2) "

"
  [82]=>
  string(35) "
生物醫學碩士學位學程
 
"
  [83]=>
  string(0) ""
  [84]=>
  string(29) "
特殊教育學系碩士班
"
  [85]=>
  string(2) "

"
  [86]=>
  string(5) "
 

"
  [87]=>
  string(2) "

"
  [88]=>
  string(4) "
 
"
  [89]=>
  string(2) " "
  [90]=>
  string(35) "
數位媒體與文教產業學系
"
  [91]=>
  string(2) "

"
  [92]=>
  string(2) " "
  [93]=>
  string(2) " "
  [94]=>
  string(2) "

"
  [95]=>
  string(2) " "
  [96]=>
  string(35) "
文化資源與休閒產業學系
"
  [97]=>
  string(2) "

"
  [98]=>
  string(2) " "
  [99]=>
  string(2) " "
  [100]=>
  string(2) " "
  [101]=>
  string(2) " "
  [102]=>
  string(45) "
文化資源與休閒產業學系
碩士班
"
  [103]=>
  string(2) "

"
  [104]=>
  string(2) " "
  [105]=>
  string(2) " "
  [106]=>
  string(2) " "
  [107]=>
  string(2) " "
  [108]=>
  string(32) "
運動競技學士學位學程
"
  [109]=>
  string(2) "

"
  [110]=>
  string(2) " "
  [111]=>
  string(2) " "
  [112]=>
  string(2) " "
  [113]=>
  string(2) " "
  [114]=>
  string(32) "
師資職前教育專業課程
"
  [115]=>
  string(14) "
小教學程
"
  [116]=>
  string(2) "

"
  [117]=>
  string(14) "
特教學程
"
  [118]=>
  string(2) "

"
  [119]=>
  string(2) " "
  [120]=>
  string(2) " "
}

從這樣的擷取可以發現,這樣只能擷取到每個課綱的分類名稱,並沒有相關的檔案條列在上面,因此要解決這個問題,我剛好發現下面的標籤訊息:

<a href="https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_UGE_1080507.docx" title="UGE">通識教育課程</a>

從上面的a標籤訊息可以知道,裡面含有標題名稱與此課綱檔案連結,所以我們可以把擷取訊息的方式改成下面這樣的方式:

<?php

require_once __DIR__ . '/vendor/autoload.php';

use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;

$latestNews = 'https://aa.nttu.edu.tw/p/412-1002-8645.php?Lang=zh-tw';
$client = new Client();
$response = $client->request('GET', $latestNews);

$courseOutlineString = (string)$response->getBody();

$courseStrings = [];
$index = 0;

$crawler = new Crawler($courseOutlineString);

$crawler
    ->filter('table a')
    ->reduce(function (Crawler $node, $i) {
        global $courseStrings;
        global $index;
        $courseStrings[$index]['data_link'] = $node->attr('href');
        $courseStrings[$index]['title'] = $node->text();
        $index += 1;
    });

var_dump($courseStrings);

得到的輸出為:

array(100) {
  [0]=>
  array(2) {
    ["data_link"]=>
    string(64) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_NTTU_1080530.docx"
    ["title"]=>
    string(20) "全校課程總綱 "
  }
  [1]=>
  array(2) {
    ["data_link"]=>
    string(64) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_NTTU_1080530.docx"
    ["title"]=>
    string(0) ""
  }
  [2]=>
  array(2) {
    ["data_link"]=>
    string(68) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_UGE_1080507.docx"
    ["title"]=>
    string(18) "通識教育課程"
  }
  [3]=>
  array(2) {
    ["data_link"]=>
    string(67) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_UGE_1080507.pdf"
    ["title"]=>
    string(0) ""
  }
  [4]=>
  array(2) {
    ["data_link"]=>
    string(68) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EDC_1080530.docx"
    ["title"]=>
    string(24) "師範學院課程架構"
  }
  [5]=>
  array(2) {
    ["data_link"]=>
    string(68) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EDC_1080530.docx"
    ["title"]=>
    string(0) ""
  }
  [6]=>
  array(2) {
    ["data_link"]=>
    string(68) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_HSC_1080418.docx"
    ["title"]=>
    string(24) "人文學院課程架構"
  }
  [7]=>
  array(2) {
    ["data_link"]=>
    string(67) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_HSC_1080418.pdf"
    ["title"]=>
    string(0) ""
  }
  [8]=>
  array(2) {
    ["data_link"]=>
    string(63) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_SEC_1080418.docx"
    ["title"]=>
    string(24) "理工學院課程架構"
  }
  [9]=>
  array(2) {
    ["data_link"]=>
    string(67) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_SEC_1080418.pdf"
    ["title"]=>
    string(0) ""
  }
  [10]=>
  array(2) {
    ["data_link"]=>
    string(61) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_CTE2.docx"
    ["title"]=>
    string(18) "專業教育課程"
  }
  [11]=>
  array(2) {
    ["data_link"]=>
    string(61) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_CTE2.docx"
    ["title"]=>
    string(0) ""
  }
  [12]=>
  array(2) {
    ["data_link"]=>
    string(65) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_HMU_1_1080530.docx"
    ["title"]=>
    string(12) "音樂學系"
  }
  [13]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_HMU_1_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [14]=>
  array(2) {
    ["data_link"]=>
    string(67) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_SMA_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [15]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EED_1_1080530.pdf"
    ["title"]=>
    string(12) "教育學系"
  }
  [16]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EED_1_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [17]=>
  array(2) {
    ["data_link"]=>
    string(64) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_HMU_2_1080530.doc"
    ["title"]=>
    string(21) "音樂學系碩士班"
  }
  [18]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_HMU_2_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [19]=>
  array(2) {
    ["data_link"]=>
    string(64) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_SIM_1_1080418.doc"
    ["title"]=>
    string(18) "資訊管理學系"
  }
  [20]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_SIM_1_1080418.pdf"
    ["title"]=>
    string(0) ""
  }
  [21]=>
  array(2) {
    ["data_link"]=>
    string(66) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_EED_21_1080530.docx"
    ["title"]=>
    string(13) "教育學系-"
  }
  [22]=>
  array(2) {
    ["data_link"]=>
    string(66) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_EED_21_1080530.docx"
    ["title"]=>
    string(21) "教育研究碩士班"
  }
  [23]=>
  array(2) {
    ["data_link"]=>
    string(70) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EED_21_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [24]=>
  array(2) {
    ["data_link"]=>
    string(63) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_HEN_1080530.docx"
    ["title"]=>
    string(18) "英美語文學系"
  }
  [25]=>
  array(2) {
    ["data_link"]=>
    string(67) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_HEN_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [26]=>
  array(2) {
    ["data_link"]=>
    string(64) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_SIM_2_1080418.doc"
    ["title"]=>
    string(27) "資訊管理學系碩士班"
  }
  [27]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_SIM_2_1080418.pdf"
    ["title"]=>
    string(0) ""
  }
  [28]=>
  array(2) {
    ["data_link"]=>
    string(66) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_EED_23_1080530.docx"
    ["title"]=>
    string(13) "教育學系-"
  }
  [29]=>
  array(2) {
    ["data_link"]=>
    string(66) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_EED_23_1080530.docx"
    ["title"]=>
    string(24) "課程與教學碩士班"
  }
  [30]=>
  array(2) {
    ["data_link"]=>
    string(70) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EED_23_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [31]=>
  array(2) {
    ["data_link"]=>
    string(69) "http://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_HCL_1_1080530.docx"
    ["title"]=>
    string(15) "華語文學系"
  }
  [32]=>
  array(2) {
    ["data_link"]=>
    string(70) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_HCL_1_1080530.docx"
    ["title"]=>
    string(0) ""
  }
  [33]=>
  array(2) {
    ["data_link"]=>
    string(63) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_SIE_1080418.docx"
    ["title"]=>
    string(18) "資訊工程學系"
  }
  [34]=>
  array(2) {
    ["data_link"]=>
    string(67) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_SIE_1080418.pdf"
    ["title"]=>
    string(0) ""
  }
  [35]=>
  array(2) {
    ["data_link"]=>
    string(65) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_EED_3_1080530.docx"
    ["title"]=>
    string(13) "教育學系-"
  }
  [36]=>
  array(2) {
    ["data_link"]=>
    string(65) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_EED_3_1080530.docx"
    ["title"]=>
    string(21) "教育研究博士班"
  }
  [37]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EED_3_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [38]=>
  array(2) {
    ["data_link"]=>
    string(68) "http://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_HCL_2_1080530.doc"
    ["title"]=>
    string(24) "華語文學系碩士班"
  }
  [39]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_HCL_2_1080530.doc"
    ["title"]=>
    string(0) ""
  }
  [40]=>
  array(2) {
    ["data_link"]=>
    string(65) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_SLS_1_1080530.docx"
    ["title"]=>
    string(15) "生命科學系"
  }
  [41]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_SLS_1_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [42]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EPH_1_1080604.pdf"
    ["title"]=>
    string(12) "體育學系"
  }
  [43]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EPH_1_1080604.pdf"
    ["title"]=>
    string(0) ""
  }
  [44]=>
  array(2) {
    ["data_link"]=>
    string(65) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_HAI_1_1080530.docx"
    ["title"]=>
    string(18) "美術產業學系"
  }
  [45]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_HAI_1_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [46]=>
  array(2) {
    ["data_link"]=>
    string(65) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_SLS_2_1080530.docx"
    ["title"]=>
    string(24) "生命科學系碩士班"
  }
  [47]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_SLS_2_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [48]=>
  array(2) {
    ["data_link"]=>
    string(65) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_EPH_2_1071108.docx"
    ["title"]=>
    string(21) "體育學系碩士班"
  }
  [49]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EPH_2_1071108.pdf"
    ["title"]=>
    string(0) ""
  }
  [50]=>
  array(2) {
    ["data_link"]=>
    string(67) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_HDS_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [51]=>
  array(2) {
    ["data_link"]=>
    string(64) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_SAP1_1080530.docx"
    ["title"]=>
    string(15) "應用科學系"
  }
  [52]=>
  array(2) {
    ["data_link"]=>
    string(64) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_SAP1_1080530.docx"
    ["title"]=>
    string(24) "化學及奈米科學組"
  }
  [53]=>
  array(2) {
    ["data_link"]=>
    string(68) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_SAP1_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [54]=>
  array(2) {
    ["data_link"]=>
    string(70) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EEC_1_1080530.docx"
    ["title"]=>
    string(18) "幼兒教育學系"
  }
  [55]=>
  array(2) {
    ["data_link"]=>
    string(70) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EEC_1_1080530.docx"
    ["title"]=>
    string(0) ""
  }
  [56]=>
  array(2) {
    ["data_link"]=>
    string(63) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_HGC_1080530.docx"
    ["title"]=>
    string(21) "兒童文學研究所"
  }
  [57]=>
  array(2) {
    ["data_link"]=>
    string(63) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_HGC_1080530.docx"
    ["title"]=>
    string(21) "(碩、博士班)"
  }
  [58]=>
  array(2) {
    ["data_link"]=>
    string(67) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_HGC_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [59]=>
  array(2) {
    ["data_link"]=>
    string(64) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_SAP2_1080530.docx"
    ["title"]=>
    string(15) "應用科學系"
  }
  [60]=>
  array(2) {
    ["data_link"]=>
    string(64) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_SAP2_1080530.docx"
    ["title"]=>
    string(15) "應用物理組"
  }
  [61]=>
  array(2) {
    ["data_link"]=>
    string(68) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_SAP2_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [62]=>
  array(2) {
    ["data_link"]=>
    string(65) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_EEC_2_1080530.docx"
    ["title"]=>
    string(27) "幼兒教育學系碩士班"
  }
  [63]=>
  array(2) {
    ["data_link"]=>
    string(65) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_EEC_2_1080530.docx"
    ["title"]=>
    string(0) ""
  }
  [64]=>
  array(2) {
    ["data_link"]=>
    string(64) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_HPC_1_1080530.doc"
    ["title"]=>
    string(27) "公共與文化事務學系"
  }
  [65]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_HPC_1_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [66]=>
  array(2) {
    ["data_link"]=>
    string(65) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_SAP_2_1080530.docx"
    ["title"]=>
    string(24) "應用科學系碩士班"
  }
  [67]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_SAP_2_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [68]=>
  array(2) {
    ["data_link"]=>
    string(63) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_EEI_1080530.docx"
    ["title"]=>
    string(33) "幼兒教育學系原住民專班"
  }
  [69]=>
  array(2) {
    ["data_link"]=>
    string(67) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EEI_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [70]=>
  array(2) {
    ["data_link"]=>
    string(65) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_HPC_2P_1080530.doc"
    ["title"]=>
    string(27) "公共與文化事務學系"
  }
  [71]=>
  array(2) {
    ["data_link"]=>
    string(65) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_HPC_2P_1080530.doc"
    ["title"]=>
    string(27) "公共事務研究碩士班"
  }
  [72]=>
  array(2) {
    ["data_link"]=>
    string(70) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_HPC_2P_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [73]=>
  array(2) {
    ["data_link"]=>
    string(67) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_SGI_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [74]=>
  array(2) {
    ["data_link"]=>
    string(62) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_EEZ1080530.docx"
    ["title"]=>
    string(68) " 幼兒教育學系學士後第二專長學位學程教保員專班"
  }
  [75]=>
  array(2) {
    ["data_link"]=>
    string(66) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EEZ1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [76]=>
  array(2) {
    ["data_link"]=>
    string(66) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_HPC_2S_1080530.docx"
    ["title"]=>
    string(27) "公共與文化事務學系"
  }
  [77]=>
  array(2) {
    ["data_link"]=>
    string(66) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_HPC_2S_1080530.docx"
    ["title"]=>
    string(27) "南島文化研究碩士班"
  }
  [78]=>
  array(2) {
    ["data_link"]=>
    string(70) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_HPC_2S_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [79]=>
  array(2) {
    ["data_link"]=>
    string(46) "/var/file/2/1002/img/1520/108_SHC_1071213.docx"
    ["title"]=>
    string(27) "高齡健康與護理管理"
  }
  [80]=>
  array(2) {
    ["data_link"]=>
    string(46) "/var/file/2/1002/img/1520/108_SHC_1071213.docx"
    ["title"]=>
    string(15) "原住民專班"
  }
  [81]=>
  array(2) {
    ["data_link"]=>
    string(67) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_SHC_1071213.pdf"
    ["title"]=>
    string(0) ""
  }
  [82]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_ESP_1_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [83]=>
  array(2) {
    ["data_link"]=>
    string(65) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_SEC_2_1080530.docx"
    ["title"]=>
    string(30) "生物醫學碩士學位學程"
  }
  [84]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_SEC_2_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [85]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_ESP_2_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [86]=>
  array(2) {
    ["data_link"]=>
    string(46) "/var/file/2/1002/img/1520/108_SHC_1071213.docx"
    ["title"]=>
    string(0) ""
  }
  [87]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EDE_1_1080530.pdf"
    ["title"]=>
    string(33) "數位媒體與文教產業學系"
  }
  [88]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EDE_1_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [89]=>
  array(2) {
    ["data_link"]=>
    string(64) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_ECL_1_1080530.doc"
    ["title"]=>
    string(33) "文化資源與休閒產業學系"
  }
  [90]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_ECL_1_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [91]=>
  array(2) {
    ["data_link"]=>
    string(65) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_ECL_2_1080530.docx"
    ["title"]=>
    string(33) "文化資源與休閒產業學系"
  }
  [92]=>
  array(2) {
    ["data_link"]=>
    string(65) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_ECL_2_1080530.docx"
    ["title"]=>
    string(9) "碩士班"
  }
  [93]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_ECL_2_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [94]=>
  array(2) {
    ["data_link"]=>
    string(63) "https://aa.nttu.edu.tw/var/file/2/1002/img/108_EAP_1080530.docx"
    ["title"]=>
    string(30) "運動競技學士學位學程"
  }
  [95]=>
  array(2) {
    ["data_link"]=>
    string(67) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_EAP_1080530.pdf"
    ["title"]=>
    string(0) ""
  }
  [96]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_CTE2_1080416.docx"
    ["title"]=>
    string(12) "小教學程"
  }
  [97]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_CTE2_1080416.docx"
    ["title"]=>
    string(0) ""
  }
  [98]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_CTE1_1080416.docx"
    ["title"]=>
    string(12) "特教學程"
  }
  [99]=>
  array(2) {
    ["data_link"]=>
    string(69) "https://aa.nttu.edu.tw/var/file/2/1002/img/1520/108_CTE1_1080416.docx"
    ["title"]=>
    string(0) ""
  }
}

我們可以發現到,有些的title是空的,原因是因為,所指定篩選標籤的方式並沒有篩選出來,因為那些字並不是放在a標籤之間的,可能是放在其他的地方,比如說是在p標籤中等地方。

那可以做的事情就是,可以做一個稍微比對的方式就可以把那些標題補上去,課綱這個東西其實算是還好,較不重要的事情。

課綱也是一個了解每個課程的資訊綱要,那比較重要的是應該是開課的課程內容。

結論

從課程綱要擷取爬蟲就告一段落了,其他的年度課程綱要擷取方法其實大同小異。

擷取會有一些沒有擷取到,原因是因為每個表格中的標題所使用標籤表示方式不同所導致,所以有時候在輸出的資訊中會有空白的標題產生。

那為了要解決這個問題,除了可以自己比對把遺失的標題加上去之外,另外可以再用更進階的方式篩選標籤與其中的內容。


上一篇
Day 14:案例研究 2-1 分析指定年度課程綱要網站
下一篇
Day 16:案例研究 2-1 分析課程查詢網站
系列文
寫給PHP開發者的30堂網路爬蟲開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言