iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 3
0
Modern Web

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

Day 3:建置爬蟲所需要的開發環境

簡介

在經過前面兩天的導論與名詞解釋之後,第三天我要帶給讀者的是有關於環境建置的部份,俗話說地好,「工欲善其事,必先利其器」。

在開始後面爬蟲專案的開發與案例研討之前,我們需要有一個良好的開發環境。本文章,就是要帶領各位讀者來建置自己需要的爬蟲開發環境。

環境介紹

在爬蟲開發環境方面,為了讓讀者可以更容易專住在案例研討與研究上面,開發環境選用的部份會以Docker作為建置開發環境的基礎,一方面讓讀者環境叫容易建置起來之外,也可以讓讀者不必花較多的時間在處理環境建置上。

以下是本次爬蟲會需要用的Dockerfile

FROM ubuntu:16.04
ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update
RUN apt-get install -y software-properties-common python-software-properties

RUN LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
RUN apt-get update
RUN apt-get install -y unzip curl apt-transport-https apt-utils curl git-core php7.2-cli php7.2-curl
RUN apt-get install -y php7.2-xml php7.2-dom php7.2-xsl php7.2-json php7.2-mbstring php7.2-zip
RUN apt-get install -y libcurl3-openssl-dev

RUN apt-get clean

WORKDIR /root/

RUN curl -sS https://getcomposer.org/installer | php

RUN php ~/composer.phar require guzzlehttp/guzzle:^6.2
RUN php ~/composer.phar require symfony/dom-crawler:^4.3
RUN php ~/composer.phar require symfony/css-selector:^4.3

透過上述的Dockerfile我們可以知道:

  • 首先,先建立一個基本的Ubuntu 16.04根檔案系統 (root file system)
  • 安裝所需要的PHP版本,這裡使用的是PHP 7.2
  • 安裝會用到的PHP擴展 (extensions)
  • 下載ComposerComposer是一個相依管理PHP套件的工具,就如同Python pip以及Node.jsNPM一樣
  • 下載完成之後,我們會安裝幾個我們會使用到的套件。
    • 第一個是 guzzlehttp/guzzle,這是幫助我們在發送HTTP請求的時候可以比較便利,當然也可以使用原生的PHP-cURL函數做到,但是有時候大家還是比較喜歡Modren PHPOOP呼叫吧XD
    • 第二個是 symfony/dom-crawlersymfony/css-selector
      • 一個是用來找尋整個HTML tree的爬蟲,另外一個是使用CSS方式的選擇器找到我們指定的HTML元素與想要的內容。

到這邊,環境大致上已經建置完成了。當然,在PHP中還是有一些比較小眾套件也可以達到與Guzzle發送HTTP 請求。和dom-crawler一樣可以解析HTML內容的套件。

不過本篇文章中,我覺得還是著重在用一些比較熱門的套件上作為開發爬蟲的環境,至於其他的熱門小眾套件,不會在這一系列的教學文章中出現,會在我的部落格文章以短篇技術文章發表的方式出現。

寫好了Dockerfile之後,接下來就是編好Docker image的時候了,我先假設讀者作業系統是類Unix,舉凡MAC OS 任一Linux發行版本等。
已經在host OS安裝好Docker指令了,若沒有的話,可以參考「參考連結」章節。

按照下面的步驟,即可以把本次系列文章中所要用到的開發環境建置好了!

mkdir ithome-lab
cd ithom-lab

# using vim to create and edit Dockerfile
vim Dockerfile

docker build -t php_crawler .

# done.

在下一個系列,會開始帶入如何開發爬蟲與第一個爬蟲開發案例探討(1-1),敬請期待!

參考連結


上一篇
Day 2:網路爬蟲,蜘蛛以及機器人之名詞解釋
下一篇
Day 4:案例研究 1-1 擷取最新消息為例
系列文
寫給PHP開發者的30堂網路爬蟲開發30

尚未有邦友留言

立即登入留言