第1章 最佳拍檔:網絡爬蟲與Python語言
1.1 什麼是網絡爬蟲 1
1.1.1 網絡爬蟲的定義 2
1.1.2 網絡爬蟲的工作流程 2
1.1.3 網絡爬蟲的分類 3
1.1.4 為什麼選擇用Python編寫網絡爬蟲 4
1.1.5 編寫爬蟲的注意事項 4
1.2 Python環境配置 5
1.2.1 Python的安裝 5
1.2.2 Python第三方庫的安裝 6
【示例1-1】使用包管理器安裝科學計算庫numpy 6
【示例1-2】源代碼方式安裝xlrd庫(使用setup.py文件) 7
【示例1-3】源代碼方式安裝xlrd庫(使用whl文件) 8
1.2.3 Python開發工具的選擇 8
【示例1-4】將文本編輯器配置成Python開發工具(以Notepad 為例) 12
1.3 Python基本語法 13
1.3.1 Python書寫規則 13
1.3.2 Python基本數據類型 18
【示例1-5】以列錶a = ['a','a','b','c','d','d','e']為例講解List的基本操作 21
【示例1-6】以列錶a = [1,2,3,4,5,6,7,8]為例講解數據型列錶的屬性分析 23
【示例1-7】以字典a為例,講解字典的基本操作 25
1.3.3 Python獨有數據生成方式:推導式 29
1.3.4 函數 30
【示例1-8】局部變量與全局變量重名的運行結果與解決方案 31
1.3.5 條件與循環 34
1.3.6 類與對象 35
【示例1-9】請輸齣學生信息中某學生的班級、姓名和總分數 35
1.3.7 Python 2代碼轉為Python 3代碼 36
【示例1-10】以文件test.py為例,介紹Python 2代碼到Python 3代碼的轉化 37
第2章 應知應會:網絡爬蟲基本知識
2.1 網頁的構成 38
2.1.1 HTML基本知識 39
2.1.2 網頁中各元素的排布 46
【示例2-1】以新浪博客文本為例,學習各類元素的排布規則 46
2.2 正則錶達式 48
2.2.1 正則錶達式簡介 48
2.2.2 Python語言中的正則錶達式 49
【示例2-2】正則錶達式應用中,當匹配次數達到10萬時,預先編譯對正則錶達式性能的提升 51
2.2.3 綜閤實例:正則錶達式的實際應用——在二手房網站中提取有用信息 52
2.3 漢字編碼問題 54
2.3.1 常見編碼簡介 54
2.3.2 常用編程環境的默認編碼 55
2.3.3 網頁編碼 56
2.3.4 編碼轉換 56
2.4 網絡爬蟲的行為準則 57
2.4.1 遵循Robots協議 57
2.4.2 網絡爬蟲的閤法性 59
第3章 靜態網頁爬取
3.1 Python常用網絡庫 61
3.1.1 urllib庫 62
【示例3-1】從眾多代理IP中選取可用的IP 63
【示例3-2】百度搜索“Python”url演示Parse模塊應用 66
3.1.2 綜閤實例:批量獲取高清壁紙 68
3.1.3 requests庫 71
【示例3-3】用requests實現豆瓣網站模擬登錄 72
3.1.4 綜閤實例:爬取曆史天氣數據預測天氣變化 74
3.2 網頁解析工具 77
3.2.1 更易上手:BeautifulSoup 77
【示例3-4】解析HTML文檔(以豆瓣讀書《解憂雜貨店》為例) 78
3.2.2 更快速度:lxml 81
3.2.3 BeautifulSoup與lxml對比 82
【示例3-5】爬取豆瓣讀書中近5年齣版的評分7分以上的漫畫 82
【示例3-6】BeautifulSoup和lxml解析同樣網頁速度測試(基於網易新聞首頁) 85
3.2.4 綜閤實例:在前程無憂中搜索並抓取不同編程語言崗位的平均收入 85
第4章 動態網頁爬取
4.1 AJAX技術 89
4.1.1 獲取AJAX請求 90
4.1.2 綜閤實例:抓取簡書百萬用戶個人主頁 91
4.2 Selenium操作瀏覽器 97
4.2.1 驅動常規瀏覽器 97
4.2.2 驅動無界麵瀏覽器 100
4.2.3 綜閤實例:模擬登錄新浪微博並下載短視頻 101
4.3 爬取移動端數據 103
4.3.1 Fiddler工具配置 103
4.3.2 綜閤實例:Fiddle實際應用——爬取大角蟲漫畫信息 105
第5章 統一架構與規範:網絡爬蟲框架
5.1 最流行的網絡爬蟲框架:Scrapy111
5.1.1 安裝須知與錯誤解決方案 111
5.1.2 Scrapy的組成與功能 112
5.2 綜閤實例:使用Scrapy構建觀影指南 118
5.2.1 網絡爬蟲準備工作 119
5.2.2 編寫Spider 121
5.2.3 處理Item 123
5.2.4 運行網絡爬蟲 124
5.2.5 數據分析 124
5.3 更易上手的網絡爬蟲框架:Pyspider126
5.3.1 創建Pyspider項目 127
【示例5-1】利用Pyspider創建抓取煎蛋網項目並測試代碼 127
5.3.2 運行Pyspider項目 129
第6章 反爬蟲應對策略
6.1 設置Headers信息 132
6.1.1 User-Agent 133
6.1.2 Cookie 136
6.2 建立IP代理池 138
6.2.1 建立IP代理池的思路 138
6.2.2 建立IP代理池的步驟 138
6.3 驗證碼識彆 140
6.3.1 識彆簡單的驗證碼 141
【示例6-1】通過pytesseract庫識彆8個簡單的驗證碼,並逐步提升準確率 141
6.3.2 識彆漢字驗證碼 146
6.3.3 人工識彆復雜驗證碼 146
6.3.4 利用Cookie繞過驗證碼 149
第7章 提升網絡爬蟲效率
7.1 網絡爬蟲策略 152
7.1.1 廣度優先策略 153
7.1.2 深度優先策略 153
7.1.3 按網頁權重決定爬取優先級 154
7.1.4 綜閤實例:深度優先和廣度優先策略效率對比
(抓取慕課網實戰課程地址) 154
7.2 提升網絡爬蟲的速度 158
7.2.1 多綫程 159
【示例7-1】使用4個綫程同步抓取慕課網實戰課程地址(基於深度優先策略) 159
7.2.2 多進程 161
7.2.3 分布式爬取 162
7.2.4 綜閤實例:利用現有知識搭建分布式爬蟲(爬取百度貼吧中的帖子) 162
第8章 更專業的爬取數據存儲與處理:數據庫
8.1 受歡迎的關係型數據庫:MySQL170
8.1.1 MySQL簡介 170
8.1.2 MySQL環境配置 171
8.1.3 MySQL的查詢語法 174
【示例8-1】使用MySQL查詢語句從數據錶Countries中選取麵積大於10000km2的歐洲國傢 177
8.1.4 使用pymysql連接MySQL數據庫 178
8.1.5 導入與導齣數據 179
8.2 應對海量非結構化數據:MongoDB數據庫 180
8.2.1 MongoDB 簡介 180
8.2.2 MongoDB環境配置 182
8.2.3 MongoDB基本語法 186
8.2.4 使用PyMongo連接MongoDB 188
8.2.5 導入/導齣JSON文件 189
第9章 Python文件讀取
9.1 Python文本文件讀寫 190
9.2 數據文件CSV 192
9.3 數據交換格式JSON193
9.3.1 JSON模塊的使用 194
【示例9-1】請用JSON模塊將data變量(包含列錶、數字和字典的數組)轉換成字符串並還原 194
9.3.2 JSON模塊的數據轉換 195
9.4 Excel讀寫模塊:xlrd 195
9.4.1 讀取Excel文件 196
9.4.2 寫入Excel單元格 197
9.5 PowerPoint文件讀寫模塊:pptx 197
9.5.1 讀取pptx 197
9.5.2 寫入pptx 198
9.6 重要的數據處理庫:Pandas庫 199
9.6.1 使用pandas庫處理CSV文件 200
9.6.2 使用pandas庫處理JSON文件 200
9.6.3 使用pandas庫處理HTML文件 202
【示例9-2】用read_html()將某二手房網站錶格中的數據提取齣來 203
9.6.4 使用pandas庫處理SQL文件 203
9.7 調用Office軟件擴展包:win32com204
9.7.1 讀取Excel文件 204
9.7.2 讀取Word文件 205
9.7.3 讀取PowerPoint文件 205
9.8 讀取PDF文件 206
9.8.1 讀取英文PDF文檔 206
9.8.2 讀取中文PDF文檔 208
9.8.3 讀取掃描型PDF文檔 210
9.9 綜閤實例:自動將網絡文章轉化為PPT文檔 211
第10章 通過API獲取數據
10.1 免費財經API——TuShare 214
10.1.1 獲取股票交易數據 215
【示例10-1】獲取某股票2017年8月份的周K綫數據 215
10.1.2 獲取宏觀經濟數據 217
10.1.3 獲取電影票房數據 219
10.2 新浪微博API的調用 220
10.2.1 創建應用 220
10.2.2 使用API 222
10.3 調用百度地圖API 225
10.3.1 獲取城市經緯度 226
【示例10-2】使用百度地圖API獲取南京市的經緯度信息 226
10.3.2 定位網絡IP 226
【示例10-3】使用百度API定位IP地址(223.112.112.144) 226
10.3.3 獲取全景靜態圖 227
10.4 調用淘寶API 228
第11章 網絡爬蟲工具
11.1 使用Excel采集網頁數據 231
11.1.1 抓取網頁中的錶格 232
11.1.2 抓取非錶格的結構化數據 233
11.2 使用Web Scraper插件 237
11.2.1 安裝Web Scraper 237
11.2.2 Web Scraper的使用 238
【示例11-1】使用Web Scraper爬取當當網小說書目 238
11.3 商業化爬取工具 240
11.3.1 自定義采集 241
【示例11-2】利用網絡爬蟲軟件八爪魚自定義采集當當網圖書信息 241
11.3.2 網站簡易采集 245
【示例11-3】利用網絡爬蟲軟件八爪魚的網絡簡易采集方式抓取房天下網中的閤肥新房房價數據 245
第12章 數據分析工具:科學計算庫
12.1 單一類型數據高效處理:Numpy庫 248
12.1.1 ndarray數組 248
【示例12-1】對一維ndarray數組a進行讀取、修改和切片操作 249
【示例12-2】對多維ndarray數組b進行讀取、修改和切片操作 250
【示例12-3】對多維ndarray數組n進行矩陣運算(拼接、分解、轉置、行列式、
求逆和點乘) 252
12.1.2 Numpy常用函數 253
【示例12-4】對多維ndarray數組a進行統計操作 253
【示例12-5】對一維ndarray數組a進行數據處理操作(去重、直方圖統計、相關
係數、分段、多項式擬閤) 256
12.1.3 Numpy性能優化 257
12.2 復雜數據全麵處理:Pandas庫 258
12.2.1 Pandas庫中的4種基礎數據結構 258
12.2.2 Pandas使用技巧 264
【示例12-6】對比普通for循環遍曆與iterrows()遍曆方法的速度差異 264
12.3 Python機器學習庫:Scikit-learn 268
【示例12-7】以鳶尾花數據為例,使用Sklearn進行監督學習的基本建模過程(決策樹模型) 269
第13章 掌握繪圖軟件:將數據可視化
13.1 應用廣泛的數據可視化:Excel繪圖 271
13.1.1 繪製(對比)柱形圖 272
13.1.2 繪製餅圖並添加標注 273
13.1.3 其他圖形 275
13.1.4 Excel頻率分布直方圖 276
【示例13-1】利用Excel繪製全國各省市城鎮人員平均工資頻率分布直方圖 276
13.2 適閤處理海量數據:Tableau繪圖 278
13.2.1 基本操作:導入數據 278
13.2.2 繪製(多重)柱狀對比圖 279
13.2.3 智能顯示:圖形轉換 281
13.2.4 繪製頻率分布直方圖 281
【示例13-2】利用Tableau繪製2015年我國城鎮就業人員平均工資頻率分布直方圖 281
13.3 完善的二維繪圖庫:Matplotlib/Seaborn 283
13.3.1 使用Matplotlib繪製函數圖錶 283
13.3.2 使用Matplotlib繪製統計圖錶 285
13.4 優化:Seaborn的使用 289
13.5 綜閤實例:利用Matplotlib構建閤肥美食地圖 293
13.5.1 繪製區域地圖 293
13.5.2 利用百度地圖Web服務API獲取美食地址 294
13.5.3 數據分析 298
13.5.4 繪製熱力圖完善美食地圖展示 300
· · · · · · (
收起)