在前一天我們已經介紹把RSS訊息擷取下來,接著就是要解析裡面的內容。
首先,我們先打開終端機,並進入Docker的環境。
docker run -it php_crawler bash
接著,開啟另一個終端的分頁,把前一天的lab1-1.php
改成下列的程式碼。
<?php
require_once __DIR__ . '/vendor/autoload.php';
use GuzzleHttp\Client;
use Symfony\Component\DomCrawler\Crawler;
$latestNews = 'https://www.nttu.edu.tw/p/503-1000-1009.php';
$client = new Client();
$response = $client->request('GET', $latestNews);
$latestNewsString = (string)$response->getBody();
$crawler = new Crawler($latestNewsString);
$crawler = $crawler
->filter('title')
->reduce(function (Crawler $node, $i) {
echo $node->text();
});
改好之後,別忘了跟前一天一樣,先用docker ps
找到現在確切的Docker container id
並將lab1-1.php
放到裡面指定的資料夾,相關操作如下:
docker ps 3280ms
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
63e18165cc9a php_crawler "bash" 7 minutes ago Up 7 minutes hardcore_feistel
docker cp lab1-1.php 63e:/root/
接著,我們切換到剛剛開啟這個Docker
爬蟲環境,使用ls
就會發現lab1-1.php
就會複製進去了。
root@63e18165cc9a:~# ls
composer.json composer.lock composer.phar lab1-1.php vendor
程式碼的部份,可以跟前一天的比較,可以發現加上了$carwler
等部份,這意思是使用了Symfony components
中的DomCrawler
進行解析RSS XML
,並使用DOM
的概念做解析。
執行之後,就會拿到一堆的title
標籤中的文字內容,如下這樣。
root@63e18165cc9a:~# php lab1-1.php
臺東大學 - 重要消息【學務處課外組】107學年度第2學期學業績優班級前三名獎學金申請公告【學務處生輔組】忠孝樓遷回一宿申請公告【研發處】Language Corner 語言交流夥伴活動~開始接受預約,亦歡迎現場報名唷^^【研發處】109學年僑生及港澳生單獨招生簡章及申請時間公告(2020年9月入學,限學士班)【研發處】外國學生申請入學(2020年春季班)現正報名中 International Student Admissions(Spring Semester 2020)【總務處出納組】108學年度第一學期(進修學士班新生)繳交學雜費公告【教務處】核發108-1舊生續領設籍臺東獎學金公告【教務處】大一優秀新生獎學金、設籍臺東獎學金(含轉學新生)申請公告【教務處】大一新生「運動、美術、音樂」績優獎學金申請公告【秘書室】東大簡訊-13號刊(20190903)
現在時間也晚了,明天我們將會介紹,介紹更進階的解析應用,比如:因為是RSS最新訊息最主要的是什麼?
是「內容」,「訊息標題」,「訊息發怖時間」,「訊息連結」與「發怖訊息單位」,因此下一篇會介紹該如何從RSS訊息中擷取這四個訊息。