第1章 Python與網絡爬蟲1
1.1 Python語言1
1.1.1 什么是Python1
1.1.2 Python的應用現狀2
1.2 Python的安裝與開發(fā)環(huán)境配置3
1.2.1 在Windows上安裝3
1.2.2 在Ubuntu和Mac OS上安裝4
1.2.3 PyCharm的使用5
1.2.4 Jupyter Notebook9
1.3 Python基本語法12
1.3.1 HelloWorld與數據類型12
1.3.2 邏輯語句19
1.3.3 Python中的函數與類22
1.3.4 Python從0到125
1.4 互聯網、HTTP與HTML25
1.4.1 互聯網與HTTP25
1.4.2 HTML27
1.5 Hello, Spider!29
1.5.1 第一個爬蟲程序29
1.5.2 對爬蟲的思考31
1.6 調研網站33
1.6.1 網站的robots.txt與Sitemap33
1.6.2 查看網站所用技術36
1.6.3 查看網站所有者信息37
1.6.4 使用開發(fā)者工具檢查網頁39
1.7 本章小結42
第2章 數據采集43
2.1 從抓取開始43
2.2 正則表達式44
2.2.1 初見正則表達式44
2.2.2 正則表達式的簡單使用46
2.3 BeautifulSoup49
2.3.1 安裝與上手49
2.3.2 BeautifulSoup的基本使用52
2.4 XPath與lxml55
2.4.1 XPath55
2.4.2 lxml與XPath的使用57
2.5 遍歷頁面59
2.5.1 抓取下一個頁面59
2.5.2 完成爬蟲60
2.6 使用API63
2.6.1 API簡介63
2.6.2 API使用示例65
2.7 本章小結68
第3章 文件與數據存儲69
3.1 Python中的文件69
3.1.1 基本的文件讀寫69
3.1.2 序列化72
3.2 字符串72
3.3 Python與圖片74
3.3.1 PIL與Pillow74
3.3.2 Python與OpenCV簡介76
3.4 CSV文件77
3.4.1 CSV簡介77
3.4.2 CSV的讀寫77
3.5 使用數據庫79
3.5.1 使用MySQL80
3.5.2 使用SQLite381
3.5.3 使用SQLAlchemy83
3.5.4 使用Redis85
3.6 其他類型的文檔86
3.7 本章小結90
第4章 JavaScript與動態(tài)內容91
4.1 JavaScript與AJAX技術91
4.1.1 JavaScript語言91
4.1.2 AJAX95
4.2 抓取AJAX數據96
4.2.1 分析數據96
4.2.2 數據提取100
4.3 抓取動態(tài)內容107
4.3.1 動態(tài)渲染頁面107
4.3.2 使用Selenium107
4.3.3 PyV8與Splash114
4.4 本章小結118
第5章 表單與模擬登錄119
5.1 表單119
5.1.1 表單與POST119
5.1.2 POST發(fā)送表單數據121
5.2 Cookie124
5.2.1 什么是Cookie124
5.2.2 在Python中使用Cookie125
5.3 模擬登錄網站128
5.3.1 分析網站128
5.3.2 通過Cookie模擬登錄129
5.4 驗證碼133
5.4.1 圖片驗證碼133
5.4.2 滑動驗證134
5.5 本章小結139
第6章 數據的進一步處理140
6.1 Python與文本分析140
6.1.1 什么是文本分析140
6.1.2 jieba與SnowNLP141
6.1.3 NLTK145
6.1.4 文本分類與聚類149
6.2 數據處理與科學計算150
6.2.1 從MATLAB到Python150
6.2.2 NumPy151
6.2.3 Pandas156
6.2.4 Matplotlib163
6.2.5 SciPy與SymPy167
6.3 本章小結167
第7章 更靈活的爬蟲168
7.1 更靈活的爬蟲—以微信數據抓取為例168
7.1.1 用Selenium抓取Web微信信息168
7.1.2 基于Python的微信API工具172
7.2 更多樣的爬蟲175
7.2.1 在BeautifulSoup和XPath之外175
7.2.2 在線爬蟲應用平臺179
7.2.3 使用urllib181
7.3 爬蟲的部署和管理190
7.3.1 配置遠程主機190
7.3.2 編寫本地爬蟲192
7.3.3 部署爬蟲198
7.3.4 查看運行結果199
7.3.5 使用爬蟲管理框架200
7.4 本章小結203
第8章 瀏覽器模擬與網站測試204
8.1 關于測試204
8.1.1 什么是測試204
8.1.2 什么是TDD205
8.2 Python的單元測試205
8.2.1 使用unittest205
8.2.2 其他方法208
8.3 使用Python爬蟲測試網站209
8.4 使用Selenium測試212
8.4.1 Selenium測試常用的網站交互212
8.4.2 結合Selenium進行單元測試214
8.5 本章小結215
第9章 更強大的爬蟲216
9.1 爬蟲框架216
9.1.1 Scrapy是什么216
9.1.2 Scrapy安裝與入門218
9.1.3 編寫Scrapy爬蟲221
9.1.4 其他爬蟲框架223
9.2 網站反爬蟲224
9.2.1 反爬蟲的策略224
9.2.2 偽裝headers225
9.2.3 使用代理228
9.2.4 訪問頻率232
9.3 多進程與分布式233
9.3.1 多進程編程與爬蟲抓取233
9.3.2 分布式爬蟲235
9.4 本章小結235
第10章 爬蟲實踐:火車票余票實時提醒236
10.1 程序設計236
10.1.1 分析網頁236
10.1.2 理解返回的JSON格式數據的意義238
10.1.3 微信消息推送238
10.1.4 運行并查看微信消息243
10.2 本章小結244
第11章 爬蟲實踐:爬取二手房數據并繪制熱力圖245
11.1 數據抓取245
11.1.1 分析網頁245
11.1.2 地址轉換成經緯度247
11.1.3 編寫代碼248
11.1.4 數據下載結果252
11.2 繪制熱力圖252
11.3 本章小結259
第12章 爬