iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 6
0
Modern Web

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

Day 6:案例研究 1-1 解析吧!解析最新RSS消息

前言

在前一天我們已經介紹把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訊息中擷取這四個訊息。

參考資料


上一篇
Day 5:案例研究 1-1 開爬吧!擷取最新RSS消息實做
下一篇
Day 7:案例研究 1-1 解析吧!解析更多的RSS內容
系列文
寫給PHP開發者的30堂網路爬蟲開發30

尚未有邦友留言

立即登入留言