《Python網路爬蟲與數據挖掘小課堂》——part1

  • 2019 年 11 月 24 日
  • 筆記

希望該文章對你們有所幫助,尤其是對python網路爬蟲或數據挖掘感興趣的初學者。

由於大家來自不同的行業及水平各有差異,有的小夥伴們甚至沒有接觸過編程,所以這次的小課堂也將採取從零基礎講述,至於能不能達到精通的水平,那得看小夥伴們的興趣、積極性、刻苦專研的精神。

最後希望通過這個小課堂講解,大家能夠自己獨立完成基於Python的有關城市大數據挖掘及分析的研究成果。

在這裡我們先不討論什麼是網路爬蟲(Web crawler / Web spider),什麼是數據挖掘(DataMining),什麼機器學習(Machine Learning, ML)等概念性的術語。

百度百科(可以不看,只做了解):

網路爬蟲(又被稱為網頁蜘蛛,網路機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網資訊的程式或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程式或者蠕蟲。

數據挖掘,又譯為資料探勘、數據採礦。它是資料庫知識發現(英語:Knowledge-Discovery in Databases,簡稱:KDD)中的一個步驟。數據挖掘一般是指從大量的數據中通過演算法搜索隱藏於其中資訊的過程。數據挖掘通常與電腦科學有關,並通過統計、在線分析處理、情報檢索、機器學習、專家系統(依靠過去的經驗法則)和模式識別等諸多方法來實現上述目標。

機器學習(Machine Learning, ML)是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、演算法複雜度理論等多門學科。專門研究電腦怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。它是人工智慧的核心,是使電腦具有智慧的根本途徑,其應用遍及人工智慧的各個領域,它主要使用歸納、綜合而不是演繹。

下面進入正題

Python的安裝及基礎知識

測試環境:win7_64bit

首先去python官網。具體步驟如下:

第一步:打開瀏覽器並訪問http://www.python.org官網下的downloads頁面下載相應的版本;

註:推薦使用迅雷下載,比較快……

下載完成後,雙擊安裝包文件(python-2.7.13.amd64.msi)

,

安轉過ArcGIS軟體的已經存在Python27這個文件夾,這裡在C盤根目錄下新建一個文件夾Python2713,

點擊Next就開始安裝了……

現已安裝成功!……

環境變數配置:把Python的安裝路徑添加到Path中,位置如下: 電腦—屬性—高級系統設置—環境變數

點擊「開始」

,在所有程式中找到安裝成功的Python2.7軟體,如圖所示:

測試能否正常運行:

1.cmd命令行測試過程如下

輸入print 「hello world」

註:如果是python3.X版本,須寫成print (「hello world」)

輸入完print語句後按「Enter」回車鍵,輸出hello world,恭喜你現在可以開始編寫python腳本呢!

2.GUI圖形介面測試如下

python語法看官方文檔手冊:

Python基礎知識

主要介紹下條件語句、循環語句、函數等基礎知識。

1. 條件語句 if Statements

其包括單分支雙分支多分支語句,if-elif-else。

1)單分支基本格式:

if condition: statements

2)雙分支基本格式:

if condition: statements else: statements

3)多分支基本格式:

if condition: statements elif condition:

statements

else: statements

註:Python中if條件語句中條件condition無需圓括弧( ),條件後面需要添加冒號:,它沒有花括弧{ }而是使用TAB鍵實現程式碼塊區分。其中condition條件判斷通常情況有布爾表達式(true或false, 0-假或1-真, 非零即真)、關係表達式(>=,<=,==,!=)和邏輯運算表達式(and, or, not)。statements語句不需要分號;結束,不像C、C#、Java等語言。

官方示例:

測試如下:

輸入程式碼如下:

x = int(raw_input("Please enter an integer: "))

if x< 0:

x = 0

print 'Negative changed to zero'

elif x == 0:

print 'Zero'

elif x == 1:

print 'Single'

else:

print 'More'

運行,按快捷鍵 F5 即可:

如輸入20,

則輸出結果: More

2. 循環語句 for Statements

基本格式:

for target in sequences: statements

其中,target表示變數名,sequences表示序列,常見類型有list(列表)、tuple(元組)、strings(字元串)和files(文件)。 Python的for循環語句沒有體現出循環次數,不像C、C#、Java等語言中,通常會有i,j,k變數記錄for語句循環次數,如for(i=0;i<=10;i++)中i循環計數,Python的for指每次從序列sequences裡面的數據項取值放到target里,取完即結束循環,取多少次循環多少次。其中in為成員資格運算符,檢查一個值是否在序列中。同樣可以使用break語句和continue語句跳出循環。

官方示例:

words= ['cat', 'window', 'defenestrate']

for win words:

print w, len(w)

輸出的結果如下:

cat 3

window6

defenestrate12

3. 循環語句 while Statements 基本格式: while condition: statements [else: statement] 其中condition判斷條件語句可以為布爾表達式、關係表達式和邏輯表達式,和if語句的判斷條件一樣。方括弧[ ]中的語句可有可無。

示例:

# coding=utf-8

i = 1

s = 0

while i <= 100:

s = s+i

i = i+1

print "從1一直加到100的總和是",s

輸出的結果如下:

從1一直加到100的總和是 5050

4. 函數 def 定義

基本格式:

def 函數名([形參])

statements

其中[形參]可有可無。

示例:

# coding=utf-8

#無形參的函數fun1()

def fun1():

print "Hello world"

#調用fun1()函數

fun1()

#有兩個形參的函數fun2()

def fun2(val1, val2):

print val1 + val2

#調用fun2()函數

fun2(10, 20)

輸出的結果如下:

Hello world

30