天天看點

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

随着人工智能和深度學習的風暴來臨,Python變得越來越火熱,作者也準備從零學習這些知識,寫相關文章。本篇文章是作者學習部署阿裡雲伺服器 CentOS環境,講解pscp工具如何将Windows系統檔案上傳到雲伺服器中,同時将雲伺服器檔案下載下傳到本地;同時教大家如何安裝phantomJS,它是一個無界面的浏覽器,被廣泛應用于Selenium自動化測試和爬蟲中。文章非常基礎,希望這系列文章對您有所幫助,如果有錯誤或不足之處,還請海涵。

一. pscp上傳下載下傳檔案

首先在Windows系統中下載下傳pscp工具(pscp.exe),将其放置于putty軟體目錄下,然後輸入Ctrl+R快捷鍵,打開CMD指令行模式,輸入如下指令:

cd C:\Software\Programe Software\Putty
pscp ?           

運作結果如下圖所示,可以檢視pscp指令的用法。

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

1.上傳檔案至雲伺服器

  • 指令:pscp 本地檔案 使用者名@ip位址:遠端路徑

比如将本地中文字型檔案simsun.ttf上傳到伺服器中,調用指令為:

pscp C:\20180216\simsun.ttf [email protected]:/root/           
[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

将C槽20180216檔案夾下的字型檔案上傳到伺服器使用者名為root的根目錄下,注意需要輸入伺服器密碼。

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

然後登陸雲伺服器,可以看到simsun.ttf檔案已經上傳。

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

2.下載下傳檔案至Windows系統

  • 指令:pscp 使用者名@ip位址:遠端路徑 Windows檔案路徑

比如将阿裡雲伺服器中的HelloWorld.py檔案和test.py兩個檔案下載下傳至本地C槽20180216檔案夾,代碼如下:

pscp [email protected]:/root/test.py C:\20180216
pscp [email protected]:/root/HelloWorld.py C:\20180216           
[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

Linux中cat指令用來檢視源代碼,rm指令用來删除檔案(remove),如下圖所示:

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

在CMD中執行該指令,如下所示:

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

可以看到Windows系統C:\20180216檔案夾下已經成功下載下傳了該檔案,同時注意符号 \ 和 / 别寫錯。

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

3.上傳檔案夾至雲伺服器

  • 指令:pscp -r Windows檔案夾 使用者名@ip位址:遠端路徑

其中“-r”表示向下遞歸目錄。現在需要将Windows系統的PhantomJS檔案夾上傳到雲伺服器root目錄下,檔案夾如下圖:

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

CMD指令行中輸入指令為:

pscp -r C:\phantomjs [email protected]:/root/           
[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

運作結果如下圖所示,可以在伺服器root目錄下看到phantomjs檔案夾,并包含各檔案。

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

4.下載下傳檔案夾至Windows系統

将雲伺服器中“root/eastmount”檔案夾及檔案下載下傳至本地20180216檔案夾,運作如下所示:

C:\Software\Program Software\Putty>pscp -r [email protected]:/root/eastmount C:\20180216\
[email protected]'s password:
first.py                  | 0 kB |   0.1 kB/s | ETA: 00:00:00 | 100%
bsfirst.py                | 0 kB |   0.3 kB/s | ETA: 00:00:00 | 100%           

本地顯示結果如下圖所示:

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

講到這裡pscp基本用法已經講述結束,它主要用來Windows與Linux系統互動,但更多的可以線上下載下傳安裝。作者這裡想上傳Phantomjs來執行代碼,但總是報錯“Messag: phantomjs.exe executable may have wrong permissions.”。

下面詳細講解如何在Linux系統中下載下傳Phantomjs并安裝。

二. Phantomjs安裝詳解

PhantomJS是一個伺服器端的 JavaScript API 的Webkit(開源的浏覽器引擎)。其支援各種Web标準: DOM 處理, CSS 選擇器, JSON, Canvas 和 SVG。PhantomJS可以用于頁面自動化,網絡監測,網頁截屏,以及無界面測試等。

PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG. Full web stack No browser required.

首先補充下yum和apt-get的差別,一般來說Linux系統基本分為兩大類:

  • RedHat系列:RedHat、CentOS、Fedora等,常見安裝包格式指令為“rpm -參數”,包管理工具是yum,如“yum install xxx”,支援tar包。
  • Debian系列:Debian、Ubuntu等,常見安裝包格式指令為“dpkg -參數”,包管理工具是apt-get,支援tar包。

當我們執行如下代碼時,提示錯誤“-bash: phantomjs: command not found”,表示還未安裝該包。

phantomjs -v
yum install phantomjs           

同時,執行“yum install phantomjs”代碼,沒有可得到的擴充包,下面我們開始正式講解吧。

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

作者準備将Phantomjs安裝包下載下傳至/root/eastmount檔案夾下。

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

第一步 下載下傳安裝包

wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x86_64.tar.bz2           
[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

第二步 解壓檔案

tar -xjvf phantomjs-1.9.7-linux-x86_64.tar.bz2           

如下圖所示:

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

解壓後調用“ls”指令檢視eastmount檔案夾,包含了已經解壓的phantomjs-1.9.7-linux-x86_64檔案夾。

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

第三步 重命名檔案夾并移動至/usr/local/phantomjs目錄

mv phantomjs-1.9.7-linux-x86_64 /usr/local/phantomjs           

調用“cd /usr/local/”指令去到指定目錄下,在檢視該目錄所包含内容,可以看到已經解壓的phantomjs檔案夾。

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

第四步 建立連接配接,将可執行檔案放入系統路徑

去到“/usr/local/bin”檔案夾下,可以看到此時還沒有Phantomjs連接配接,接下來需要建立連接配接。

ln -s /usr/local/phantomjs/bin/phantomjs /usr/bin/
ln -s /usr/local/phantomjs/bin/phantomjs /usr/local/bin/           

建立連接配接過程如下所示:

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

建立後的連接配接,可以看到phantomjs已經放入了系統檔案夾,我的了解該步驟相當于Windows系統下的配置環境變量PATH。

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼
[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

第五步 安裝依賴包

yum install fontconfig
yum install freetype2           
[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

第六步 檢驗Phantomjs是否安裝成功

phantomjs -v           

可以看到我們安裝的版本為phantomjs 1.9.7。

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

三. Phantomjs基礎代碼

下面簡單講解Phantomjs基礎代碼。

1.Hello World

首先我們在root檔案夾下建立一個test.js檔案,指令如下:

ls
touch test.js --建立檔案
vim test.js   --編輯檔案           
[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

test.js代碼如下:

console.log("Hello CSDN!!!");
phantomjs.exit();           
[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

輸入“phantomjs test.js”執行代碼輸出“Hello CSDN!!!”。

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

2.擷取網頁标題

建立baidu.js檔案,并編輯代碼。

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

baidu.js代碼:

var page = require('webpage').create();
page.open('http://www.baidu.com', function (status) {
     var title = page.evaluate(function () {
         return document.title;
     });
     console.log('Page title is ' + title);
     phantom.exit();
});           
[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

輸出結果如下圖所示“百度一下,你就知道”。

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

3.簡單下載下傳圖檔

同樣的方法建立一個baidupic.js檔案,代碼如下:

var page = require('webpage').create();  
page.open('http://www.baidu.com', function () {  
    page.render('example.png');  
    phantom.exit();  
});           
[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

輸出結果如下,可以看到“example.png”被下載下傳至root目錄下。

[CentOS Python系列] 二.阿裡雲pscp上傳下載下傳伺服器檔案及phantomjs安裝詳解一. pscp上傳下載下傳檔案二. Phantomjs安裝詳解三. Phantomjs基礎代碼

講到這篇文章就介紹結束了,本文的目的是為了後面的Selenium自動化測試及爬蟲操作,希望文章對您有所幫助,同時會繼續深入學習,包括爬蟲過程、定時爬蟲、資料庫操作、伺服器搭建等内容。

很高興重回阿裡雲,開心能與大家在這裡認識,希望能分享更高品質的文章幫助大家,且行且珍惜!

(By:Eastmount 2021-11-08 夜于武漢)