Python 網絡爬蟲與數據採集
內容描述
本書的主旨是介紹如何結合Python進行網絡爬蟲程序的開發,從Python語言的基本特性入手,詳細介紹了Python爬蟲開發的各個方面,涉及包括HTTP、HTML、JavaScript、正則表達式、自然語言處理、數據科學等不同領域的內容。全書共分為15章,包括了Python基礎知識、網站分析、網頁解析、Python文件讀寫、Python與數據庫、AJAX技術、模擬登錄、文本與數據分析、網站測試、Scrapy爬蟲框架、爬蟲性能等多個主題。內容覆蓋網絡抓取與爬蟲編程中的主要知識和技術,在重視理論基礎的前提下,從實用性和豐富度出發,結合實例演示了爬蟲編寫的核心流程。
本書適合Python語言初學者、網絡爬蟲技術愛好者、數據分析從業人士以及高等院校電腦科學、軟件工程等相關專業的師生閱讀。
目錄大綱
第1章 Python與網絡爬蟲 1
1.1 Python簡介 1
1.1.1 什麼是Python 1
1.1.2 Python的應用現狀 2
1.2 Python的安裝與開發環境配置 3
1.2.1 在Windows操作系統上安裝 3
1.2.2 在Ubuntu和macOS操作系統上安裝 4
1.2.3 PyCharm的使用 5
1.2.4 Jupyter Notebook 9
1.3 Python基本語法 11
1.3.1 HelloWorld與數據類型 11
1.3.2 邏輯語句 17
1.3.3 Python中的函數與類 20
1.3.4 Python從0到1 21
1.4 互聯網與HTTP、HTML 22
1.4.1 互聯網與HTTP 22
1.4.2 HTML 23
1.5 Hello, Spider! 25
1.5.1 第一個爬蟲程序 25
1.5.2 思考我們的爬蟲 27
1.6 調研網站 27
1.6.1 網站的robots. txt與Sitemap 27
1.6.2 查看網站所用技術 30
1.6.3 查看網站所有者信息 31
1.6.4 使用開發者工具檢查網頁 32
1.7 本章小結 35
第2章 數據採集 36
2.1 從抓取開始 36
2.2 正則表達式 37
2.2.1 初見正則表達式 37
2.2.2 正則表達式的簡單使用 38
2.3 BeautifulSoup 41
2.3.1 BeautifulSoup的安裝 41
2.3.2 BeautifulSoup的基本使用方法 43
2.4 XPath與lxml 46
2.4.1 XPath 46
2.4.2 lxml與XPath的使用方法 47
2.5 遍歷頁面 49
2.5.1 抓取下一個頁面 49
2.5.2 完成爬蟲 50
2.6 API 52
2.6.1 API簡介 52
2.6.2 API使用示例 54
2.7 本章小結 57
第3章 文件與數據存儲 58
3.1 Python中的文件 58
3.1.1 基本的文件讀寫 58
3.1.2 序列化 60
3.2 字符串 61
3.3 Python與圖片 62
3.3.1 PIL與Pillow 62
3.3.2 OpenCV簡介 64
3.4 CSV文件 65
3.4.1 CSV簡介 65
3.4.2 CSV的讀寫 65
3.5 使用數據庫 67
3.5.1 使用MySQL 67
3.5.2 使用SQLite3 68
3.5.3 使用SQLAlchemy 70
3.5.4 使用Redis 71
3.6 其他類型的文檔 72
3.7 本章小結 77
第4章 JavaScript與動態內容 78
4.1 JavaScript與Ajax技術 78
4.1.1 JavaScript簡介 78
4.1.2 Ajax技術 81
4.2 抓取Ajax數據 82
4.2.1 分析數據 82
4.2.2 提取數據 86
4.3 抓取動態內容 92
4.3.1 動態渲染頁面 92
4.3.2 使用Selenium 92
4.3.3 PyV8與Splash 98
4.4 本章小結 101
第5章 表單與模擬登錄 102
5.1 表單 102
5.1.1 表單與POST 102
5.1.2 POST發送表單數據 104
5.2 Cookie 106
5.2.1 Cookie簡介 106
5.2.2 在Python中使用Cookie 108
5.3 模擬登錄網站 110
5.3.1 分析網站 110
5.3.2 通過Cookie模擬登錄 111
5.4 驗證碼 114
5.4.1 圖片驗證碼 114
5.4.2 滑動驗證 116
5.5 本章小結 120
第6章 數據的進一步處理 121
6.1 Python與文本分析 121
6.1.1 文本分析簡介 121
6.1.2 jieba與SnowNLP 122
6.1.3 NLTK 125
6.1.4 文本分類與聚類 128
6.2 數據處理與科學計算 130
6.2.1 從MATLAB到Python 130
6.2.2 NumPy 131
6.2.3 pandas 135
6.2.4 Matplotlib 140
6.2.5 SciPy與SymPy 143
6.3 本章小結 144
第7章 更靈活的爬蟲 145
7.1 更靈活的爬蟲——以微信數據抓取為例 145
7.1.1 用Selenium抓取Web微信信息 145
7.1.2 基於Python的微信API工具 149
7.2 多樣的爬蟲 151
7.2.1 在BeautifulSoup和XPath之外 151
7.2.2 在線爬蟲應用平台 154
7.2.3 使用urllib 156
7.3 爬蟲的部署和管理 163
7.3.1 配置遠程主機 163
7.3.2 編寫本地爬蟲 165
7.3.3 部署爬蟲 169
7.3.4 查看運行結果 170
7.3.5 使用爬蟲管理框架 171
7.4 本章小結 174
第8章 模擬瀏覽器與網站測試 175
8.1 關於測試 175
8.1.1 測試簡介 175
8.1.2 TDD 175
8.2 Python的單元測試 176
8.2.1 使用unittest 176
8.2.2 其他方法 178
8.3 使用Python爬蟲測試網站 179
8.4 使用Selenium測試 181
8.4.1 Selenium測試常用的網站交互 182
8.4.2 結合Selenium進行單元測試 183
8.5 本章小結 184
第9章 更強大的爬蟲 185
9.1 爬蟲框架 185
9.1.1 Scrapy簡介 185
9.1.2 Scrapy安裝與入門 186
9.1.3 編寫Scrapy爬蟲 189
9.1.4 其他爬蟲框架 191
9.2 網站反爬蟲 192
9.2.1 反爬蟲的策略 192
9.2.2 偽裝headers 193
9.2.3 使用代理IP地址 196
9.2.4 修改訪問頻率 199
9.3 多進程與分佈式 199
9.3.1 多進程編程與爬蟲抓取 199
9.3.2 分佈式爬蟲 201
9.4 本章小結 202
第10章 實戰:購物網站評論抓取 203
10.1 查看網絡數據 203
10.2 編寫爬蟲 206
10.3 本章小結 211
第11章 實戰:爬蟲數據的深入分析與數據處理 212
11.1 明確目標與數據準備 212
11.1.1 明確目標 212
11.1.2 數據準備 212
11.1.3 工具選擇 213
11.2 初步分析 214
11.2.1 用戶角度分析 214
11.2.2 電影角度分析 217
11.3 電影推薦 220
11.4 本章小結 221
第12章 實戰:抓取商品價格信息 222
12.1 抓取商品歷史價格 222
12.1.1 網頁分析 222
12.1.2 編寫爬蟲 225
12.1.3 運行結果 230
12.2 本章小結 231
第13章 實戰:模擬登錄爬蟲 232
13.1 模擬登錄POJ提交代碼並抓取評測結果 232
13.1.1 網頁請求分類 232
13.1.2 網頁分析 233
13.1.3 編寫爬蟲 235
13.1.4 運行結果 238
13.2 本章小結 238
第14章 實戰:音樂評論內容的抓取與分析 239
14.1 jieba庫 239
14.2 wordcloud庫 239
14.3 抓取音樂的評論內容 240
14.3.1 網頁分析 240
14.3.2 編寫爬蟲 241
14.3.3 運行結果 243
14.4 本章小結 244
第15章 實戰:異步爬蟲程序實踐 245
15.1 項目分析 245
15.2 數據存儲 245
15.3 頁面下載器 247
15.3.1 網絡請求 248
15.3.2 頁面解碼 249
15.4 生產者—消費者模型 250
15.4.1 調度器 250
15.4.2 消費者 251
15.4.3 生產者 253
15.5 客戶端界面設計 254
15.5.1 首頁 255
15.5.2 搜索結果頁 255
15.5.3 新聞詳情頁 256
15.5.4 主窗口和運行效果 257
15.6 本章小結 259
作者介紹
呂雲翔,比利時布魯塞爾大學應用科學學院應用信息技術專業碩士、經濟學院工商管理專業碩士。
具有多年的軟件開發、項目管理、計算機教學經驗。
對IT行業具有較全面的認識。 2003至今任北航軟件學院副教授。
研究領域包括:軟件工程 IT項目管理。