Python 網絡爬蟲與數據分析從入門到實踐

馬國俊

  • Python 網絡爬蟲與數據分析從入門到實踐-preview-1
  • Python 網絡爬蟲與數據分析從入門到實踐-preview-2
  • Python 網絡爬蟲與數據分析從入門到實踐-preview-3
Python 網絡爬蟲與數據分析從入門到實踐-preview-1

買這商品的人也買了...

商品描述

《Python網絡爬蟲與數據分析從入門到實踐》從初學者的視角出發,以案例實操為核心,系統地介紹網絡爬蟲的原理、工具使用與爬取技術,並詳細講解數據分析的各種技巧。本書主要內容包括:Python基礎語法,數據分析工具NumPy、Pandas、Matplotlib的使用,網絡爬蟲庫Urllib、BeautifulSoup、Scrapy,正則表達式在網絡爬蟲中的應用,數據預處理與數據分析方法、中文文本處理、文本向量化技術,以及機器學習算法在數據分析中的應用。書中還給出了大量案例和項目,可以幫助讀者快速上手,提高實用技能。 《Python網絡爬蟲與數據分析從入門到實踐》內容豐富,註重實操,適用於網絡爬蟲崗位、數據分析崗位的初級工程師和各類工程技術人員,還可作為高校經濟、管理、人文社科、大數據等專業的教學用書。

目錄大綱

目   錄

第1章  Python基礎語法 1

1.1  搭建Python開發環境 1

1.1.1  安裝Python解釋器 2

1.1.2  安裝第三方開發包 3

1.1.3  在PyCharm里設置解釋器 3

1.1.4  在PyCharm里新建項目和文件 4

1.2  Python語法入門 6

1.2.1  Python常量和變量 6

1.2.2  基本數據類型 6

1.2.3  字符串 8

1.2.4  單行註釋和多行註釋 10

1.2.5  條件分支語句 10

1.2.6  循環語句 11

1.2.7  break和continue 12

1.2.8  格式化輸出 13

1.3  函數及用法 14

1.3.1  定義和調用函數 14

1.3.2  return關鍵字 15

1.3.3  遞歸調用函數 15

1.4  函數的特殊操作 16

1.4.1  參數是函數 16

1.4.2  返回結果是函數 17

1.4.3  匿名函數(Lambda表達式) 17

1.5  Python的數據結構 18

1.5.1  列表及其用法 18

1.5.2  元組及其用法 19

1.5.3  字典及其用法 19

1.6  動手練習 20

第2章  數據科學庫之NumPy 21

2.1  NumPy庫中的ndarray對象 21

2.1.1  如何創建ndarray 22

2.1.2  用dtype參數指定數據類型 23

2.1.3  創建全0或全1的ndarray 24

2.2  NumPy常見操作 25

2.2.1  用arange創建序列 25

2.2.2  常用的數學運算 26

2.2.3  NumPy的科學計算函數 26

2.2.4  NumPy的聚合統計函數 27

2.3  索引和切片操作 28

2.3.1  索引操作 28

2.3.2  布爾索引與過濾數據 29

2.3.3  切片操作中的內存共享問題 29

2.3.4  copy函數與創建副本 31

2.4  動手練習 31

第3章  數據處理庫之Pandas 33

3.1  Series對象及操作 34

3.1.1  Series常規操作 34

3.1.2  Series抽樣操作 35

3.1.3  Series索引操作 35

3.1.4  Series切片操作 37

3.1.5  Series布爾索引過濾操作 38

3.1.6  Series遍歷操作 39

3.2  DataFrame對象及操作 39

3.2.1  創建DataFrame對象 39

3.2.2  提取DataFrame對象的數據 40

3.2.3  遍歷DataFrame對象 41

3.2.4  排序DataFrame中的數據 42

3.2.5  以列為單位操作DataFrame數據 42

3.2.6  分析統計DataFrame數據 43

3.3  DataFrame同各種文件交互 44

3.3.1  把DataFrame數據導入CSV文件 44

3.3.2  把CSV數據導入DataFrame對象 45

3.3.3  把DataFrame數據導入JSON文件 46

3.3.4  把JSON數據導入DataFrame對象 46

3.4  動手練習 47

 

第4章  數據可視化庫之Matplotlib 48

4.1  繪制各類圖形 49

4.1.1  繪制折線圖 49

4.1.2  繪圖時的通用屬性參數 50

4.1.3  繪制柱狀圖 51

4.1.4  繪制餅圖 52

4.1.5  繪制直方圖 53

4.2  設置坐標 54

4.2.1  設置x坐標和y坐標的標簽文字 55

4.2.2  設置坐標範圍 55

4.2.3  設置主次刻度 56

4.2.4  設置並旋轉刻度文字 58

4.3  增加可視化美觀效果 59

4.3.1  設置圖例 59

4.3.2  設置中文標題 60

4.3.3  設置網格效果 61

4.4  設置子圖效果 63

4.4.1  通過add_subplot方法繪制子圖 63

4.4.2  通過subplot方法繪制子圖 64

4.4.3  子圖共享x坐標軸 65

4.4.4  在大圖里繪制子圖 66

4.5  高級圖表的繪制方式 67

4.5.1  繪制散點圖 67

4.5.2  繪制熱力圖 69

4.5.3  繪制等值線圖 70

4.6  動手練習 71

第5章  數據獲取之網絡爬蟲 72

5.1  和爬蟲有關的HTTP協議 72

5.1.1  基於HTTP協議的請求處理流程 73

5.1.2  HTTP請求頭包含操作系統和瀏覽器信息 74

5.1.3  Post和Get請求方法 75

5.1.4  HTTP常見的狀態碼 75

5.2  通過Urllib庫獲取網頁信息 76

5.2.1  通過request爬取網頁 76

5.2.2  設置超時時間 76

5.2.3  用URLError處理網絡異常 77

5.2.4  設置header屬性來模擬瀏覽器發送請求 78

5.3  通過BeautifulSoup提取頁面信息 78

5.3.1  安裝BeautifulSoup庫 78

5.3.2  用Tag提取HTML元素和屬性 79

5.3.3  用NavigableString提取元素值 80

5.3.4  用Comment提取註釋 80

5.3.5  製作爬取指定頁面內容的規則 81

5.4  通過正則表達式截取信息 83

5.4.1  查找指定的字符串 83

5.4.2  用通配符來模糊匹配 84

5.4.3  通過原子表來定義匹配規則 85

5.4.4  用findall按匹配規則截取內容 86

5.5  動手練習 88

第6章  用Scrapy框架爬取數據 89

6.1  Scrapy框架概述 89

6.1.1  生成Scrapy項目 90

6.1.2  觀察Scrapy框架的構成 90

6.1.3  分析yield關鍵字 90

6.2  簡單爬蟲範例 91

6.2.1  創建爬蟲項目 92

6.2.2  在items里定義數據模型 92

6.2.3  生成爬蟲文件 93

6.2.4  在pipelines文件里定義數據的存儲方式 94

6.2.5  觀察爬蟲程序的運行結果 95

6.2.6  Scrapy框架開發爬蟲項目的步驟 95

6.3  復雜爬蟲範例 96

6.3.1  明確需求 96

6.3.2  創建Scrapy項目 97

6.3.3  定義圖書的數據模型 98

6.3.4  編寫代碼實現爬蟲功能 99

6.3.5  把爬取結果存為CSV文件 100

6.3.6  運行爬蟲並觀察結果 101

6.4  動手練習 102

第7章  數據預處理與數據分析方法 103

7.1  基於Python的數據預處理 103

7.1.1  數據規範化處理 104

7.1.2  缺失值處理 104

7.1.3  重復值處理 106

7.2  Python與MySQL數據庫的交互 106

7.2.1  在本地搭建MySQL環境 107

7.2.2  安裝用來連接MySQL的PyMySQL庫 108

7.2.3  通過select語句執行查詢 110

7.2.4  執行增、刪、改操作 111

7.3  描述性統計 113

7.3.1  對樣本數據的分析 113

7.3.2  平均數、中位數和百分位數 114

7.3.3  用箱狀圖展示分位數 115

7.3.4  用小提琴圖展示數據分佈情況 115

7.3.5  統計極差、方差和標準差 116

7.4  概率分析方法與推斷統計 117

7.4.1  用直方圖來擬合正態分佈圖形 117

7.4.2  驗證序列是否滿足正態分佈 118

7.4.3  參數估計方法 119

7.4.4  顯著性驗證 120

7.5  基於時間序列的統計方法 121

7.5.1  統計移動平均值 121

7.5.2  時間序列的自相關性分析 122

7.5.3  時間序列的偏自相關性分析 124

7.6  動手練習 125

第8章  中文文本處理 126

8.1  中文文本處理概述 126

8.1.1  中文分詞 127

8.1.2  詞頻統計 127

8.1.3  詞性標註 127

8.1.4  停用詞消除 127

8.2  基於結巴庫的文本處理 128

8.2.1  實現分詞效果 128

8.2.2  提取關鍵字 129

8.2.3  標註詞性 129

8.2.4  統計詞頻 130

8.3  引入自定義信息 131

8.3.1  用自定義詞典分詞 131

8.3.2  去除自定義的停用詞 132

8.3.3  自定義詞性 133

8.4  基於NLTK庫的文本處理 133

8.4.1  統計詞頻和出現次數 134

8.4.2  展示高頻詞 135

8.4.3  繪制詞頻分佈圖 135

8.4.4  繪制詞雲 136

8.5  動手練習 137

第9章  文本向量化技術 138

9.1  文本向量化技術概述 138

9.1.1  什麽是文本向量化 139

9.1.2  什麽是TF-IDF 139

9.1.3  基於TF-IDF的文本向量化示例 139

9.2  基於Gensim的文本向量化分析 140

9.2.1  Gensim庫介紹 140

9.2.2  計算TF-IDF 141

9.2.3  分詞與TF-IDF技術的整合應用 142

9.3  向量化技術的使用場景 143

9.3.1  相似度分析 143

9.3.2  情感分析 144

9.4  動手練習 146

第10章  基於機器學習的分析方法 147

10.1  基礎知識 148

10.1.1  什麽是機器學習 148

10.1.2  安裝sklearn庫並瞭解數據集 148

10.1.3  訓練集、驗證集和測試集 149

10.2  線性回歸分析方法 149

10.2.1  波士頓房價案例的數據集 149

10.2.2  多元線性回歸分析方法 152

10.2.3  交叉驗證分析技術 154

10.3  嶺回歸和Lasso回歸分析法 155

10.3.1  嶺回歸和線性回歸的差別 155

10.3.2  用嶺回歸擬合波士頓房價 157

10.3.3  用Lasso回歸分析波士頓房價 159

10.4  基於機器學習的分類分析方法 160

10.4.1  SVM分類器的線性與高斯內核 160

10.4.2  用SVM分類器分類鳶尾花 162

10.4.3  基於KNN分類器的可視化效果 165

10.4.4  用KNN分類器分類葡萄酒數據 166

10.4.5  用邏輯回歸分類器分類鳶尾花 167

10.5  基於手寫體數字識別的分類範例 168

10.5.1  分析Digits數據集 169

10.5.2  用訓練集和測試集評估分類結果 169

10.5.3  觀察分類模型的預測與真實結果 171

10.6  動手練習 172

第11章  電影評論數據分析案例 174

11.1  用Scrapy爬取電影評論數據 174

11.1.1  創建Scrapy項目 175

11.1.2  分析待爬取的評論頁面代碼 175

11.1.3  編寫評論數據的模型 177

11.1.4  編寫爬蟲代碼 178

11.1.5  編寫數據持久化代碼 179

11.1.6  編寫爬蟲項目的配置信息 180

11.1.7  運行爬蟲並獲取數據 180

11.2  對爬取的電影評論數據進行分析 181

11.2.1  通過餅圖分析評分 181

11.2.2  通過柱狀圖分析評分 182

11.2.3  繪制關於評論的詞雲 183

11.2.4  用直方圖觀察情感分析結果 185

11.3  動手練習 186

第12章  二手房數據分析案例 187

12.1  用Scrapy爬取二手房數據 187

12.1.1  創建Scrapy項目並明確待爬取的數據 187

12.1.2  分析待爬取的頁面代碼 188

12.1.3  編寫二手房數據的模型 190

12.1.4  編寫爬蟲代碼 191

12.1.5  編寫數據持久化代碼 193

12.1.6  編寫爬蟲項目的配置信息 193

12.1.7  運行爬蟲並獲取數據 193

12.2  數據預處理與數據分析 194

12.2.1  根據數據特性清洗數據 194

12.2.2  通過餅圖展示二手房數據 195

12.2.3  通過柱狀圖展示二手房數據 197

12.2.4  通過直方圖展示二手房房價 199

12.2.5  通過小提琴圖展示二手房數據 200

12.2.6  通過散點圖展示關註情況 202

12.2.7  繪制二手房相關的詞雲 203

12.3  動手練習 205

第13章  通過電子郵件發送數據分析結果 207

13.1  實現發送電子郵件的功能 207

13.1.1  發送簡單格式的電子郵件(無收件人信息) 208

13.1.2  發送HTML格式的電子郵件(顯示收件人) 209

13.1.3  包含文本附件的電子郵件(多個收件人) 211

13.1.4  在正文中嵌入圖片 212

13.2  以電子郵件的形式發送RSI指標圖 214

13.2.1  RSI指標的原理和算法描述 214

13.2.2  通過範例程序觀察RSI的算法 215

13.2.3  把Matplotlib繪制的RSI圖存儲為圖片 216

13.2.4  RSI整合K線圖後以電子郵件形式發送 218

13.3  以電子郵件的形式發送基於RSI指標的買賣點 222

13.3.1  RSI指標對買賣點的指導意義 222

13.3.2  基於RSI指標計算買點並以電子郵件的形式發出 222

13.3.3  基於RSI指標計算賣點並以電子郵件的形式發出 225

13.4  動手練習 227