python 網頁爬蟲與 Docker 整合

 

使用 python 網頁爬蟲,除了需要注意 python 版本【2.x 或是 3.x】,還要注意 module 是否安裝,以及 module 的版本是否正確,不然,就會出現錯誤訊息…

image

以這個例子來看,python版本不對,source code 是 3.x 版,系統的 python 只有 2.x 版,還有,相關的 python module 也沒安裝…

https://hub.docker.com 找一下現成的 Docker images

docker search pandas

image

這裡以【gwidx/pandas-python:latest】為例:

它是 Debian 8.x + python 3.x + pip 8.x

docker pull gwidx/pandas-python:latest

image

先安裝 vi,等一下用來編輯 python script

docker run -i -t gwidx/pandas-python bash

apt-get update

apt-get install vim -y

image

更新 pip

pip install –upgrade pip

image

安裝其他相關 module

pip install beautifulsoup4

pip install html5lib

pip install lxml

pip install numpy

pip install python-dateutil

pip install pytz

pip install six

image

移除 pandas 0.18.x,安裝 pandas 0.21.x

pip uninstall pandas -y

pip install pandas

image

執行 python 爬蟲,抓臺灣銀行的外匯

python /usr/src/app/currency.py

image

python script 如下:

#-*- coding: utf-8 -*-
# 2017.11.27 Mon Version 0.0.1
#   在 Linux Docker 上可以執行的版本
import pandas
data=pandas.read_html(‘http://rate.bot.com.tw/xrt?Lang=zh-TW’)

currency=data[0]
currency.iloc[:,0:5]
currency=currency.iloc[:,0:5]

currency.columns=[u’幣別’,u’現金匯率-本行買入’,u’現金匯率-本行賣出’,u’即期匯率-本行買入’,u’即期匯率-本行賣出’]

currency[u’幣別’]=currency[u’幣別’].str.extract(‘\((\w+)\)’)
print(currency)

環境都確定無誤,準備要客製化 Docker image

先確認 container 的名稱,剛剛沒有指定,docker 會自動 assing

docker ps -a

image

先 commit 一個新的 image

docker commit -m “Python3 + pandas" thirsty_morse9 python3_pandas

thirsty_morse9】是 container 的名稱

python3_pandas】是新的 image 的名稱

image

將 image 匯出成檔案

docker save –output=/root/python3_pandas.tar python3_pandas

/root/python3_pandas.tar】是指定匯出的檔案名稱

python3_pandas】是哪一個 image 需要匯出

image

最後再 zip 壓縮

gzip /root/python3_pandas.tar

image

要將這個客製化的 Docker image 上傳到 https://hub.docker.com/ 當然是可以,這裡先離線方式使用,另外找台機器【server1】測試…

docker load -i /root/python3_pandas.tar.gz

image

看看是不是直接就可以 python 網頁爬蟲,擷取最新的台灣銀行外匯資料…

docker run -i -t python3_pandas:latest python ./currency.py

image

在【server1】這台全新的機器,只需要匯入客製化過後的 Docker image,立馬就可以 python 爬蟲擷取網頁,Docker 的確是應用程式開發/部屬/測試 非常好用的工具!

廣告
本篇發表於 Bookmark, CentOS 6, CentOS 7, Cloud雲端, container, Docker, 虛擬化, Linux, python, RHEL 6, RHEL 7, ubuntu。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s