[CentOS Python系列] 二.pscp上傳下載伺服器檔案及phantomjs安裝詳解

Eastmount發表於2018-02-17

從2014年開始,作者主要寫了三個Python系列文章,分別是基礎知識、網路爬蟲和資料分析。

它們都是基於Windows系統下的Python程式設計,每個系列都從安裝過程、基礎知識到實際應用三個方面進行講解,但在寫這些文章的時候,始終有兩個缺陷:一是沒有介紹Linux系統下的Python程式設計,並且所有程式碼使用的都是Python 2.7版本;另一方面是如何結合伺服器,真實的專案中,通常會將Python程式碼託管到伺服器中。

這裡寫圖片描述 這裡寫圖片描述 這裡寫圖片描述

同時,隨著人工智慧和深度學習的風暴來臨,Python變得越來越火熱,作者也準備從零學習這些知識,寫相關文章。本篇文章是作者學習部署阿里雲伺服器 CentOS環境,講解pscp工具如何將Windows系統檔案上傳到雲伺服器中,同時將雲伺服器檔案下載到本地;同時教大家如何安裝phantomJS,它是一個無介面的瀏覽器,被廣泛應用於Selenium自動化測試和爬蟲中。

文章非常基礎,希望這系列文章對您有所幫助,如果有錯誤或不足之處,還請海涵。



一. pscp上傳下載檔案

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

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

執行結果如下圖所示,可以檢視pscp命令的用法。



1.上傳檔案至雲伺服器

命令:pscp 本地檔案 使用者名稱@ip地址:遠端路徑

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

pscp C:\20180216\simsun.ttf root@39.107.105.166:/root/



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



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



2.下載檔案至Windows系統

命令:pscp  使用者名稱@ip地址:遠端路徑  Windows檔案路徑

比如將阿里雲伺服器中的HelloWorld.py檔案和test.py兩個檔案下載至本地C盤20180216資料夾,程式碼如下:

pscp root@39.107.105.166:/root/test.py C:\20180216
pscp root@39.107.105.166:/root/HelloWorld.py C:\20180216


Linux中cat命令用來檢視原始碼,rm命令用來刪除檔案(remove),如下圖所示:



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



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



3.上傳資料夾至雲伺服器

命令:pscp  -r  Windows資料夾  使用者名稱@ip地址:遠端路徑  

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



CMD命令列中輸入命令為:

pscp -r C:\phantomjs root@39.107.105.166:/root/

執行結果如下圖所示,可以在伺服器root目錄下看到phantomjs資料夾,幷包含各檔案。



4.下載資料夾至Windows系統

命令:pscp  -r  Windows資料夾  使用者名稱@ip地址:遠端路徑  

將雲伺服器中“root/eastmount”資料夾及檔案下載至本地20180216資料夾,執行如下所示:

C:\Software\Program Software\Putty>pscp -r root@39.107.105.166:/root/eastmount C:\20180216\
root@39.107.105.166'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%

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



講到這裡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”程式碼,沒有可得到的擴充套件包,下面我們開始正式講解吧。



作者準備將Phantomjs安裝包下載至/root/eastmount資料夾下。


第一步 下載安裝包

wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x86_64.tar.bz2


第二步 解壓檔案

tar -xjvf phantomjs-1.9.7-linux-x86_64.tar.bz2
如下圖所示:


解壓後呼叫“ls”命令檢視eastmount資料夾,包含了已經解壓的phantomjs-1.9.7-linux-x86_64資料夾。


第三步 重新命名資料夾並移動至/usr/local/phantomjs目錄

mv phantomjs-1.9.7-linux-x86_64 /usr/local/phantomjs
呼叫“cd /usr/local/”命令去到指定目錄下,在檢視該目錄所包含內容,可以看到已經解壓的phantomjs資料夾。


第四步 建立連線,將可執行檔案放入系統路徑

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

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

建立連線過程如下所示:



建立後的連線,可以看到phantomjs已經放入了系統資料夾,我的理解該步驟相當於Windows系統下的配置環境變數PATH。





第五步 安裝依賴包

yum install fontconfig
yum install freetype2


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

phantomjs -v

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




三. Phantomjs基礎程式碼


下面簡單講解Phantomjs基礎程式碼,參考我的文章: 在Windows下安裝PhantomJS和CasperJS及入門介紹(上)


1.Hello World

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

ls
touch test.js --建立檔案
vim test.js   --編輯檔案


test.js程式碼如下:

console.log("Hello CSDN!!!");
phantomjs.exit();


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



2.獲取網頁標題

建立baidu.js檔案,並編輯程式碼。


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();
});


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



3.簡單下載圖片

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

var page = require('webpage').create();  
page.open('http://www.baidu.com', function () {  
    page.render('example.png');  
    phantom.exit();  
}); 


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




同時在安裝過程中,您可能會遇到如下錯誤:

安裝phantomjs後輸入phantomjs --v提示:-bash:phantomjs:command not found


講到這篇文章就介紹結束了,本文的目的是為了後面的Selenium自動化測試及爬蟲操作,希望文章對您有所幫助,同時會繼續深入學習,包括爬蟲過程、定時爬蟲、資料庫操作、伺服器搭建等內容。狗年第一篇文章,祝大家新年快樂,娜我們就一起進步成長吧~
(By:Eastmount CSDN 秀璋 2018-02-17 深夜1點 http://blog.csdn.net/Eastmount)


       引子 · 真正的緣分都是在天上締結的
                    By: Eastmount

        也許我們不在附中見面,也不再師大的林間相遇。
        隔三年,也會在遵義支教的教室認識,
        如果不在遵義的教室認識,你的學生也並未成為我的學生。
        隔七年,也一定會在上海、南京、蘇州邂逅,
        秀璋沿著娜娜的足跡,緊緊跟隨,
        你在前,我在後,你在奔跑,我在漫步。
        如果七年之中,我們都只是擦肩而過,我只能沿著你的足跡不斷追尋。
        隔了九年,也一定會........在貴陽認識。
        總之,你的教書夢我來完成,我的低情商你來彌補。
        可是如果那樣,我們都已經老了啊!
        老了......也很美。
        丘位元的這支箭,是奇幻的一箭,
        靈魂的伴侶終究還是走在了一起。
        果真,再高的情商都抵不過淳樸,再富裕的人生都比不了溫馨。
        是啊!璋與娜的緣分早已在天上締結,這便是所謂的命中註定吧!


相關文章