本書詳細(xì)介紹大數(shù)據(jù)采集與清洗的相關(guān)知識(shí)和技術(shù),共9章,分別是概述、網(wǎng)絡(luò)爬蟲基礎(chǔ)、網(wǎng)頁(yè)數(shù)據(jù)抓取、緩存下載頁(yè)面、并發(fā)/并行爬取、用Selenium抓取動(dòng)態(tài)內(nèi)容、Scrapy爬蟲框架及其應(yīng)用、大數(shù)據(jù)平臺(tái)系統(tǒng)日志采集、pandas數(shù)據(jù)清洗。本書大體上由數(shù)據(jù)采集(第2~8章)和數(shù)據(jù)清洗(第9章)兩部分內(nèi)容構(gòu)成,以Python作為編程語(yǔ)言。數(shù)據(jù)采集部分以Web數(shù)據(jù)采集為主,也涉及Hadoop大數(shù)據(jù)平臺(tái)的數(shù)據(jù)采集,內(nèi)容由淺入深,循序漸進(jìn),理論與實(shí)踐相結(jié)合,幫助讀者理解和掌握數(shù)據(jù)采集的相關(guān)技術(shù);數(shù)據(jù)清洗部分主要介紹pandas庫(kù)的使用,幫助讀者掌握數(shù)據(jù)清洗的方法。本書每章都有配套的習(xí)題,有助于讀者鞏固所學(xué)知?識(shí)。
本書可作為高校數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)、信息管理與信息系統(tǒng)等專業(yè)相關(guān)課程的教材,也可作為大數(shù)據(jù)工程師的必備手冊(cè),還可作為網(wǎng)絡(luò)爬蟲愛(ài)好者和計(jì)算機(jī)領(lǐng)域的技術(shù)人員的參考?書。
(1)內(nèi)容詳實(shí),實(shí)例豐富
本書各章內(nèi)容講解詳細(xì),由淺入深,可操作性強(qiáng);提供了大量的實(shí)例及其實(shí)現(xiàn)代碼。每章后面提供了習(xí)題,以供讀者鞏固所學(xué)知識(shí)和進(jìn)一步提高。
(2)提供一個(gè)爬蟲示例網(wǎng)站
本書提供了一個(gè)爬蟲示例網(wǎng)站——全國(guó)高;拘畔,作為爬蟲爬取的目標(biāo)網(wǎng)站。該網(wǎng)站專門供數(shù)據(jù)采集聯(lián)系實(shí)踐使用。
(3)提供在線實(shí)訓(xùn)
人郵和鯨大數(shù)據(jù)實(shí)訓(xùn)平臺(tái)為本書提供在線實(shí)訓(xùn)。
阮宗利 ◎主講課程 1.主講本科生必修課:《C++程序設(shè)計(jì)》、《Windows程序設(shè)計(jì)》、《數(shù)據(jù)庫(kù)原理與應(yīng)用》、《計(jì)算機(jī)網(wǎng)絡(luò)與編程》、《MPI并行程序設(shè)計(jì)》、《Java語(yǔ)言》、《數(shù)學(xué)實(shí)驗(yàn)》、《Python語(yǔ)言與實(shí)訓(xùn)》、《大數(shù)據(jù)采集與可視化》、《專業(yè)綜合實(shí)訓(xùn)》等課程。 ◎承擔(dān)和參與項(xiàng)目 1.近年來(lái),主持的代表性科研項(xiàng)目: (1)海洋數(shù)值模擬與FVCOM模式研究,自主創(chuàng)新科研計(jì)劃項(xiàng)目(理工科)_科技專項(xiàng),2019-2021。 (2)“面向云架構(gòu)的海洋數(shù)值預(yù)報(bào)模式關(guān)鍵技術(shù)研究”子課題合作項(xiàng)目,國(guó)家重點(diǎn)研發(fā)計(jì)劃,2018-2021。 2.近年來(lái),參與的代表性科研項(xiàng)目: (1)變分?jǐn)?shù)階移動(dòng)-不動(dòng)模型的高性能二次樣條配置方法研究,自主創(chuàng)新科研計(jì)劃項(xiàng)目(理工科)_強(qiáng)基專項(xiàng),2022-2024。 (2)海上高質(zhì)量充填防砂管柱與參數(shù)優(yōu)化研究,橫向項(xiàng)目,2022-2022。 (3)基于中法海洋星風(fēng)浪同步觀測(cè)的海浪譜同化方法研究,國(guó)家自然科學(xué)基金【面上項(xiàng)目】,2022-2025 (4)局地化隱式粒子濾波及其海浪數(shù)據(jù)同化應(yīng)用,山東省自然科學(xué)基金【面上項(xiàng)目】,2020-2023. ◎獲獎(jiǎng)情況(除教師個(gè)人獲獎(jiǎng)之外,還包含指導(dǎo)學(xué)生獲獎(jiǎng)情況) 1. 指導(dǎo)本科畢業(yè)設(shè)計(jì).校級(jí)優(yōu)秀畢業(yè)設(shè)計(jì)(論文),2023。 2. 指導(dǎo)全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽. 山東省一等獎(jiǎng)、三等獎(jiǎng),2023。 3. 指導(dǎo)全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽. 山東省二等獎(jiǎng),2022。 4. 指導(dǎo)全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽. 山東省三等獎(jiǎng),2019。 5.《數(shù)值計(jì)算方法(第二版)》.中國(guó)石油大學(xué)(華東)教學(xué)成果二等獎(jiǎng),2011,排名第3。
第 1章 概述 1
1.1 大數(shù)據(jù)來(lái)源 1
1.2 數(shù)據(jù)采集方法與基本流程 2
1.2.1 數(shù)據(jù)采集方法 2
1.2.2 數(shù)據(jù)采集基本流程 2
1.3 數(shù)據(jù)清洗方法與基本流程 3
1.3.1 數(shù)據(jù)清洗方法 3
1.3.2 數(shù)據(jù)清洗工具 4
1.3.3 數(shù)據(jù)清洗基本流程 4
1.4 本書主要內(nèi)容及主要案例 5
1.4.1 主要內(nèi)容 5
1.4.2 主要案例 5
1.4.3 編程工具 8
1.5 本章小結(jié) 8
1.6 習(xí)題 8
第 2章 網(wǎng)絡(luò)爬蟲基礎(chǔ) 9
2.1 網(wǎng)絡(luò)爬蟲簡(jiǎn)介 9
2.1.1 網(wǎng)絡(luò)爬蟲分類 9
2.1.2 網(wǎng)絡(luò)爬蟲應(yīng)遵守的基本準(zhǔn)則 10
2.2 調(diào)研目標(biāo)網(wǎng)站 10
2.2.1 了解目標(biāo)網(wǎng)站所采用的技術(shù)與
審查網(wǎng)頁(yè)元素 11
2.2.2 了解網(wǎng)站結(jié)構(gòu)與規(guī)模 13
2.2.3 分析robots.txt文件 15
2.2.4 分析網(wǎng)站地圖文件
sitemap.xml 16
2.3 使用urllib包下載網(wǎng)頁(yè) 16
2.3.1 下載頁(yè)面HTML源代碼 17
2.3.2 設(shè)置字符編碼 17
2.3.3 存儲(chǔ)HTML源代碼至文件 18
2.3.4 異常處理 19
2.3.5 下載重試 20
2.3.6 設(shè)置用戶代理 22
2.3.7 獲取網(wǎng)頁(yè)字符集 24
2.4 使用requests包下載網(wǎng)頁(yè) 26
2.4.1 requests包簡(jiǎn)介 26
2.4.2 基于requests包的頁(yè)面
下載器 28
2.5 網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn) 31
2.5.1 站點(diǎn)地圖爬蟲 31
2.5.2 鏈接模板爬蟲 34
2.5.3 鏈接跟蹤爬蟲 39
2.6 對(duì)爬蟲限速 44
2.6.1 爬蟲限速器Throttle類 44
2.6.2 限速器安裝到鏈接跟蹤爬蟲 46
2.7 讓爬蟲遵守站點(diǎn)robots協(xié)議 47
2.7.1 使用urllib.robotparser模塊
解析robots.txt文件 47
2.7.2 為鏈接跟蹤爬蟲添加robot
解析器 48
2.8 本章小結(jié) 50
2.9 習(xí)題 50
第3章 網(wǎng)頁(yè)數(shù)據(jù)抓取 51
3.1 了解HTML 51
3.1.1 什么是HTML 51
3.1.2 HTML文檔結(jié)構(gòu) 51
3.1.3 HTML元素的屬性 53
3.2 在Web瀏覽器中審查網(wǎng)頁(yè) 53
3.3 使用正則表達(dá)式抓取數(shù)據(jù) 55
3.3.1 正則表達(dá)式 55
3.3.2 re模塊 58
3.3.3 使用re模塊抓取頁(yè)面數(shù)據(jù) 60
3.4 使用Beautiful Soup包抓取
數(shù)據(jù) 64
3.4.1 Beautiful Soup包 65
3.4.2 遍歷soup文檔樹 66
3.4.3 搜索soup文檔樹 69
3.4.4 提取元素中的內(nèi)容文本 72
3.4.5 使用Beautiful Soup抓取頁(yè)面
數(shù)據(jù) 73
3.4.6 使用Web瀏覽器工具測(cè)試和
獲取CSS選擇器 74
3.5 使用lxml包抓取數(shù)據(jù) 77
3.5.1 lxml中使用CSS選擇器 78
3.5.2 XPath選擇器 80
3.5.3 使用Web瀏覽器工具測(cè)試和
獲取XPath選擇器 84
3.5.4 使用XPath選擇器抓取頁(yè)面
數(shù)據(jù) 85
3.6 3種抓取方法性能對(duì)比 86
3.7 本章小結(jié) 88
3.8 習(xí)題 88
第4章 緩存下載頁(yè)面 90
4.1 將HTML文檔緩存至磁盤 90
4.1.1 解析URL 91
4.1.2 編寫磁盤緩存類 92
4.1.3 為磁盤緩存添加失效時(shí)間 94
4.1.4 將磁盤緩存功能集成到爬蟲
下載器類 96
4.1.5 在鏈接跟蹤爬蟲中使用
新下載器 97
4.1.6 在鏈接跟蹤爬蟲中使用磁盤
緩存 98
4.2 使用Redis 101
4.2.1 Redis安裝與配置 101
4.2.2 Redis基本命令 105
4.2.3 Redis可視化管理工具 112
4.2.4 在Python程序中訪問(wèn)Redis 115
4.3 將HTML文檔緩存至Redis 116
4.3.1 編寫Redis緩存類 116
4.3.2 在鏈接跟蹤爬蟲中使用Redis
緩存 118
4.4 本章小結(jié) 121
4.5 習(xí)題 121
第5章 并發(fā)/并行爬取 123
5.1 線程與進(jìn)程 123
5.2 使用threading模塊創(chuàng)建多線程
爬蟲 126
5.2.1 threading模塊 126
5.2.2 線程的生命周期 129
5.2.3 線程等待 129
5.2.4 創(chuàng)建守護(hù)線程 132
5.2.5 為鏈接跟蹤爬蟲創(chuàng)建
多線程 133
5.3 使用線程池實(shí)現(xiàn)多線程 140
5.3.1 線程池的使用 140
5.3.2 使用線程池實(shí)現(xiàn)多線程的鏈接
跟蹤爬蟲 142
5.4 使用multiprocessing包創(chuàng)建
多進(jìn)程爬蟲 146
5.4.1 multiprocessing包 146
5.4.2 為鏈接跟蹤爬蟲創(chuàng)建多進(jìn)程
多線程 149
5.5 串行爬蟲、多線程爬蟲與多進(jìn)程
爬蟲性能比較 156
5.6 本章小結(jié) 158
5.7 習(xí)題 158
第6章 用Selenium抓取動(dòng)態(tài)
內(nèi)容 160
6.1 了解JavaScript、jQuery和
AJAX 160
6.1.1 為何抓取數(shù)據(jù)失敗了 160
6.1.2 JavaScript、jQuery和
AJAX 162
6.2 使用Selenium獲取動(dòng)態(tài)數(shù)據(jù) 165
6.2.1 安裝Selenium與
WebDriver 165
6.2.2 使用Selenium與瀏覽器
交互 166
6.2.3 案例1—爬取火車票信息 177
6.2.4 案例2—爬取京東商城
數(shù)據(jù) 183
6.3 通過(guò)數(shù)據(jù)請(qǐng)求API獲取數(shù)據(jù) 189
6.4 本章小結(jié) 191
6.5 習(xí)題 191
第7章 Scrapy爬蟲框架及其
應(yīng)用 192
7.1 Scrapy爬蟲框架簡(jiǎn)介 192
7.1.1 Scrapy爬蟲框架結(jié)構(gòu) 192
7.1.2 Scrapy基本工作流程 193
7.2 安裝Scrapy 194
7.3 創(chuàng)建Scrapy爬蟲項(xiàng)目 194
7.3.1 創(chuàng)建基于Scrapy爬蟲框架的
爬蟲項(xiàng)目 194
7.3.2 定義數(shù)據(jù)模型 195
7.3.3 創(chuàng)建爬蟲 196
7.3.4 修改settings.py中的某些
參數(shù) 198
7.3.5 運(yùn)行爬蟲項(xiàng)目 198
7.3.6 保存爬取結(jié)果 200
7.4 使用項(xiàng)目管道 200
7.4.1 啟用項(xiàng)目管道 200
7.4.2 實(shí)現(xiàn)項(xiàng)目管道功能 201
7.5 使用中間件 203
7.5.1 編寫爬蟲中間件 203
7.5.2 下載器中間件 207
7.6 本章小結(jié) 210
7.7 習(xí)題 211
第8章 大數(shù)據(jù)平臺(tái)系統(tǒng)日志
采集 212
8.1 Hadoop系統(tǒng)及相關(guān)集群 212
8.1.1 Hadoop系統(tǒng) 212
8.1.2 ZooKeeper集群 213
8.1.3 Kafka集群 214
8.1.4 Flume集群 215
8.1.5 Spark集群 217
8.1.6 系統(tǒng)架構(gòu) 217
8.2 構(gòu)建Flume日志采集系統(tǒng) 218
8.2.1 安裝Flume集群 218
8.2.2 使用Flume采集數(shù)據(jù) 219
8.3 構(gòu)建Kafka分布式消息系統(tǒng) 224
8.3.1 安裝、配置和啟動(dòng)Kafka
集群 224
8.3.2 Kafka集群測(cè)試 226
8.4 集成Flume與Kafka集群 228
8.4.1 配置兩個(gè)Flume Agent
文件 229
8.4.2 Flume-Kafka-HDFS集群
測(cè)試 232
8.5 本章小結(jié) 234
8.6 習(xí)題 234
第9章 pandas數(shù)據(jù)清洗 235
9.1 pandas中的數(shù)據(jù)對(duì)象 235
9.1.1 Series對(duì)象 235
9.1.2 DataFrame對(duì)象 237
9.1.3 創(chuàng)建數(shù)據(jù)框 241
9.1.4 數(shù)據(jù)框轉(zhuǎn)換為其他格式的
數(shù)據(jù) 242
9.2 數(shù)據(jù)框數(shù)據(jù)存取 244
9.2.1 []運(yùn)算符 244
9.2.2 loc[]和iloc[]存取器 246
9.2.3 at[]和iat[]存取器 248
9.2.4 多級(jí)標(biāo)簽的存取 248
9.2.5 get()函數(shù) 249
9.2.6 head()函數(shù)和tail()函數(shù) 249
9.2.7 nlargest()函數(shù)和nsmallest()
函數(shù) 250
9.2.8 query()函數(shù) 251
9.3 數(shù)據(jù)讀取與保存 251
9.3.1 讀寫文本文件 252
9.3.2 讀寫Excel文件 253
9.3.3 讀寫SQL數(shù)據(jù)庫(kù) 255
9.4 操作數(shù)據(jù)框 257
9.4.1 修改列索引與行索引 258
9.4.2 添加列、插入新列與刪除列 258
9.4.3 調(diào)整列順序 259
9.4.4 添加行與刪除行 260
9.4.5 按索引排序與按值排序 261
9.4.6 列值轉(zhuǎn)化為行索引與行索引
轉(zhuǎn)化為列值 262
9.4.7 數(shù)據(jù)透視與數(shù)據(jù)融合 263
9.5 缺失值處理 267
9.5.1 不滿足條件的元素置空 267
9.5.2 判斷元素是否為NA 268
9.5.3 統(tǒng)計(jì)non-NA元素的數(shù)量 268
9.5.4 刪除含有NA元素的列或行 268
9.5.5 填充NA 269
9.6 刪除重復(fù)數(shù)據(jù) 271
9.7 數(shù)值運(yùn)算函數(shù) 271
9.8 字符串?dāng)?shù)據(jù)處理 272
9.9 日期數(shù)據(jù)處理 273
9.10 數(shù)據(jù)清洗案例 274
9.10.1 案例1—清洗影視數(shù)據(jù) 274
9.10.2 案例2—清洗心率數(shù)據(jù) 277
9.11 本章小結(jié) 281
9.12 習(xí)題 282
附錄 示例網(wǎng)站運(yùn)行發(fā)布操作
指南 283