Python 爬蟲與反爬蟲開發從入門到精通

劉延林

  • 出版商: 北京大學
  • 出版日期: 2021-01-01
  • 售價: $594
  • 貴賓價: 9.5$564
  • 語言: 簡體中文
  • 頁數: 388
  • 裝訂: 平裝
  • ISBN: 7301322690
  • ISBN-13: 9787301322697
  • 相關分類: Web-crawler 網路爬蟲
  • 立即出貨

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

相關主題

商品描述

隨著網絡技術的迅速發展,如何有效地提取並利用信息,以及如何有效地防止信息被爬取,已成為一個巨大的挑戰。本書從零開始系統地介紹了Python網絡爬蟲與反爬蟲的開發與實戰技能,全書共分為4篇,具體內容安排如下。 第1篇:基礎篇(第1~3章)。系統地講解了Python爬蟲與反爬蟲開發環境的搭建、爬蟲與反爬蟲通用基礎知識、Python編程基礎。 第2篇:爬蟲篇(第4~8章)。這部分講解了網絡爬蟲的相關知識與技能,主要包括網絡爬蟲快速入門、XPath匹配網頁數據、re正則匹配數據、WebSocket數據抓取、Scrapy爬蟲框架應用與開發等。 第3篇:反爬蟲篇(第9~16章)。這部分講解了網絡反爬蟲的相關知識與技能,主要包括爬蟲與反爬蟲的區別與認識、反爬—Header信息校驗、反爬—IP限制、反爬—動態渲染頁面、反爬—文本混淆、反爬—特徵識別、反爬—驗證碼識別、反爬—APP數據抓取等。 第4篇:實戰篇(第17章)。本篇主要列舉了4個案例,綜合講解Python爬蟲與反爬蟲項目的實戰應用。 本書從零基礎開始講解,系統全面,案例豐富,註重實戰,既適合Python程序員和爬蟲愛好者閱讀學習,也可以作為廣大職業院校相關專業的教材或參考用書。

作者簡介

劉延林,雲鏡團隊創始人,擁有多年網絡爬蟲開發經驗,著有《Python網絡爬蟲開發從入門到精通》,擅長Python網絡爬蟲、Web、數據挖掘與分析、網絡安全、產品研發等領域。

目錄大綱

目錄
Contents

第1篇 基礎篇
第1章 爬蟲與反爬蟲開發環境搭建 /2
1.1 Python 3環境搭建 /3
1.1.1 下載Python 3安裝包 /3
1.1.2 安裝Python /4
1.1.3 pip包管理工具 /6
1.2 PyCharm的安裝與基本使用 /7
1.2.1 安裝PyCharm /7
1.2.2 創建Python項目 /8
1.2.3 debug調試代碼 /12
1.2.4 創建venv虛擬環境 /14
1.3 Tesseract-OCR /16
1.3.1 下載 /16
1.3.2 安裝 /17
1.3.3 配置環境變量 /18
1.4 mitmproxy /18
1.4.1 下載 /19
1.4.2 安裝 /20
1.4.3 安裝SSL證書 /21
1.5 JDK 1.8 /22
1.5.1 下載JDK /22
1.5.2 安裝 /22
1.5.3 測試是否安裝成功 /23
本章小結 /24

第2章 爬蟲與反爬蟲通用基礎知識 /25
2.1 網頁基礎 /26
2.1.1 網頁的組成 /26
2.1.2 網頁的類型 /28
2.2 網絡傳輸協議 /28
2.2.1 認識HTTP /29
2.2.2 HTTPS /29
2.2.3 HTTP與HTTPS請求過程示例 /29
2.3 Session和Cookies /31
2.3.1 Cookie /31
2.3.2 Session /33
2.3.3 Session和Cookie的區別 /33
2.3.4 常見誤區 /33
2.4 Nginx服務器 /34
2.4.1 Nginx信號 /34
2.4.2 反向代理 /35
2.4.3 Nginx中實現反向代理 /35
2.5 代理IP /36
2.5.1 原理 /36
2.5.2 分類 /37
2.5.3 獲取途徑 /37
2.6 HTTP接口概念 /40
2.7 新手問答 /40
本章小結 /41

第3章 Python編程基礎 /42
3.1 Python的基礎語法 /43
3.1.1 第一個Python程序 /43
3.1.2 運行程序 /43
3.1.3 註釋 /46
3.1.4 行與縮進 /46
3.1.5 多行語句 /47
3.1.6 import 與 from...import導入模塊 /48
3.1.7 變量 /48
3.2 基本數據類型 /49
3.2.1 Number /49
3.2.2 String /50
3.2.3 List /50
3.2.4 Tuple /52
3.2.5 Dictionary /52
3.2.6 Set /53
3.2.7 布爾類型 /54
3.3 流程控制 /55
3.3.1 條件控制 /55
3.3.2 循環 /56
3.3.3 range()函數 /58
3.3.4 break和continue語句 /58
3.3.5 pass /59
3.4 函數 /60
3.4.1 定義一個函數 /60
3.4.2 調用函數 /60
3.5 文件操作 /61
3.5.1 txt文件讀寫 /61
3.5.2 csv文件讀寫 /62
3.6 面向對象 /64
3.6.1 類 /64
3.6.2 類對象 /65
3.6.3 類方法 /66
3.6.4 繼承 /67
3.7 多線程 /68
3.7.1 threading /68
3.7.2 多線程裝飾器封裝 /69
3.8 新手實訓 /70
3.9 新手問答 /71
本章小結 /72

第2篇 爬蟲篇
第4章 網絡爬蟲快速入門 /74
4.1 爬蟲的基本結構及工作流程 /75
4.2 urllib網絡請求庫 /75
4.2.1 請求一個簡單的網頁 /75
4.2.2 設置請求超時 /78
4.2.3 使用data參數提交數據 /78
4.2.4 Request /79
4.3 requests網絡請求庫 /82
4.3.1 requests模塊的安裝 /82
4.3.2 請求第一個網頁 /82
4.3.3 get和post請求 /84
4.3.4 參數提交 /86
4.4 urllib3網絡請求庫 /86
4.4.1 發起請求 /87
4.4.2 響應內容 /88
4.4.3 查詢參數 /88
4.4.4 表單數據 /89
4.4.5 提交JSON數據 /89
4.5 Postman接口測試工具 /90
4.5.1 請求接口 /90
4.5.2 常用功能介紹 /93
4.6 新手實訓 /95
4.7 新手問答 /95
本章小結 /96

第5章 XPath匹配網頁數據 /97
5.1 安裝XPath /98
5.2 XPath的基礎語法 /98
5.3 在Python中使用XPath匹配數據 /99
5.3.1 根據class屬性進行匹配 /100
5.3.2 根據id屬性進行匹配 /101
5.3.3 根據name屬性進行匹配 /102
5.4 XPath表達式技巧 /103
5.5 擴展補充知識點 /105
5.5.1 Selector /105
5.5.2 Beautiful Soup /106
5.6 新手實訓 /107
5.7 新手問答 /109
本章小結 /109

第6章 re正則匹配數據 /110
6.1 re.compile函數 /111
6.2 re.match函數 /111
6.3 re.search函數 /113
6.4 re.match與re.search的區別 /114
6.5 檢索和替換 /114
6.6 findall函數 /115
6.7 常見正則表達式寫法 /116
6.8 新手實訓 /117
6.9 新手問答 /119
本章小結 /120

第7章 WebSocket數據抓取 /121
7.1 WebSocket通信原理 /122
7.2 使用aioWebSocket獲取數據 /122
7.2.1 安裝AioWebSocket /123
7.2.2 分析WebSocket請求 /123
7.2.3 編寫代碼獲取數據 /126
7.3 新手實訓 /129
7.4 新手問答 /131
本章小結 /131

第8章 Scrapy爬蟲框架應用與開發 /132
8.1 Scrapy框架的基本架構 /133
8.1.1 Scrapy的基本組件 /133
8.1.2 工作原理 /133
8.2 安裝Scrapy /134
8.3 創建項目 /135
8.4 定義Item /135
8.5 編寫第一個Spider /136
8.6 運行爬蟲 /137
8.7 提取Item /137
8.8 在Shell中嘗試Selector選擇器 /138
8.9 提取數據 /139
8.10 使用Item /140
8.11 Item Pipeline /141
8.12 將Item寫入JSON文件 /142
8.13 新手實訓 /143
8.14 新手問答 /146
本章小結 /146

第3篇 反爬蟲篇
第9章 爬蟲與反爬蟲 /148
9.1 爬蟲知識的回顧與總結 /149
9.1.1 爬蟲的爬取過程 /149
9.1.2 案例演示 /149
9.2 反爬蟲的概念與定義 /154
本章小結 /155

第10章 反爬—Header信息校驗 /156
10.1 User-Agent /157
10.1.1 如何應對User-Agent反爬 /157
10.1.2 User-Agent反爬原理 /161
10.2 Cookie校驗 /162
10.2.1 如何應對Cookie反爬 /162
10.2.2 Cookie反爬原理 /163
10.3 Referer校驗 /165
10.3.1 Referer的反爬原理 /165
10.3.2 應對方法 /165
10.4 簽名校驗 /166
10.4.1 簽名反爬原理 /166
10.4.2 應對方法 /166
10.5 新手實訓 /170
10.6 新手問答 /176
本章小結 /176

第11章 反爬—IP限制 /177
11.1 代理設置 /178
11.1.1 urllib代理設置 /178
11.1.2 requests代理設置 /179


11.2 代理池構建 /17911.2.1 獲取IP /180
11.2.2 驗證代理是否可用 /181
11.2.3 使用代理池 /182
11.3 搭建自己的代理服務器 /183
11.3.1 什麼是ADSL /183
11.3.2 購買代理雲主機 /183
11.3.3 測試撥號 /185
11.3.4 設置代理服務器 /188
11.3.5 動態獲取IP /190
11.3.6 使用Python實現撥號 /192
11.4 使用Nginx實現封禁IP /194
11.5 新手問答 /195
本章小結 /196

第12章 反爬—動態渲染頁面 /197
12.1 動態渲染案例介紹 /198
12.1.1 單擊事件 /198
12.1.2 異步加載數據 /199
12.1.3 焦點事件 /200
12.2 常見應對動態渲染頁面的解決辦法 /201
12.3 使用Selenium爬取動態渲染頁面 /201
12.3.1 安裝Selenium庫 /202
12.3.2 Selenium定位方法 /203
12.3.3 控制瀏覽器操作 /204
12.3.4 WebDriver常用方法 /206
12.3.5 其他常用方法 /207
12.3.6 鼠標鍵盤事件 /208
12.3.7 獲取斷言 /211
12.3.8 設置元素等待 /212
12.3.9 多表單切換 /214
12.3.10 下拉框選擇 /215
12.3.11 調用JavaScript代碼 /216
12.3.12 窗口截圖 /217
12.3.13 無頭模式 /217
12.4 獲取瀏覽器Network請求和響應 /218
12.4.1 Browsermob-Proxy /219
12.4.2 獲取接口返回數據 /220
12.4.3 二級代理 /222
12.5 新手實訓 /222
12.6 新手問答 /224
本章小結 /225

第13章 反爬—文本混淆 /226
13.1 圖片偽裝反爬 /227
13.1.1 飛常準航班動態信息 /227
13.1.2 分析網站 /228
13.1.3 應對方案 /230
13.1.4 代碼實現 /230
13.2 CSS偏移反爬 /231
13.2.1 去哪兒網 /231
13.2.2 分析網站 /232
13.2.3 代碼實現 /235
13.3 編碼映射反爬 /238
13.3.1 大眾點評網 /238
13.3.2 分析網站 /239
13.3.3 代碼實現 /240
13.4 字體反爬 /242
13.4.1 美團手機版網頁 /242
13.4.2 分析網站 /243
13.4.3 代碼實現 /247
13.5 新手實訓 /248
13.6 新手問答 /252
本章小結 /252

第14章 反爬—特徵識別 /253
14.1 瀏覽器指紋 /254
14.1.1 瀏覽器指紋實現技術有哪些 /254
14.1.2 防止瀏覽器指紋檢測方法 /254
14.1.3 防客戶端追踪措施 /255
14.2 WebDriver驅動識別 /255
14.2.1 WebDriver識別示例 /255
14.2.2 WebDriver識別原理 /257
14.2.3 如何繞過被識別 /259
14.3 使用mitmproxy /262
14.3.1 認識mitmproxy /262
14.3.2 工作原理 /263
14.3.3 使用mitmproxy繞過驅動檢測 /263
14.4 網頁精靈 /269
14.4.1 安裝網頁精靈 /270
14.4.2 網頁精靈的簡單使用 /271
14.5 新手實訓 /275
14.6 新手問答 /277
本章小結 /277

第15章 反爬—驗證碼識別 /278
15.1 普通圖形驗證碼 /279
15.1.1 識別圖形驗證碼的解決方案 /279
15.1.2 OCR識別圖形驗證碼 /279
15.1.3 採用第三方打碼平台識別 /280
15.2 滑動驗證碼 /281
15.2.1 分析思路 /282
15.2.2 使用Selenium實現模擬淘寶登錄的拖動驗證 /282
15.3 滑動拼圖驗證碼 /285
15.3.1 分析思路 /285
15.3.2 使用代碼實現滑動 /285
15.3.3 運行測試 /291
15.4 新手實訓 /292
15.5 新手問答 /294
本章小結 /295

第16章 反爬—APP數據抓取 /296
16.1 APP的抓包分析 /297
16.1.1 Fiddler抓包工具 /297
16.1.2 Fiddler設置 /297
16.1.3 使用Fiddler抓包獵聘APP測試 /299
16.1.4 Charles抓包工具 /300
16.1.5 Charles設置 /301
16.1.6 Charles抓包 /304
16.1.7 Charles分析 /307
16.1.8 Charles重發 /309
16.2 Appium自動化 /310
16.2.1 安裝Appium /311
16.2.2 Android開發環境配置 /312
16.2.3 啟動APP /313
16.2.4 appPackage和appActivity參數獲取方法 /322
16.3 APK安裝包反編譯 /324
16.3.1 準備工作 /324
16.3.2 反編譯得到源碼 /324
16.4 APK反編譯知識補充 /327
16.5 新手實訓 /327
16.6 新手問答 /332
本章小結 /332

第4篇 實戰篇
第17章 項目實戰 /334
17.1 土地市場網——地塊公示 /335
17.1.1 分析網站 /336
17.1.2 代碼實現 /342
17.1.3 實例總結 /348
17.2 紐約工商數據採集 /348
17.2.1 分析網站 /348
17.2.2 編寫代碼爬取 /351
17.2.3 實例總結 /356
17.3 攜程旅行火車票票價數據採集 /356
17.3.1 分析網站 /358
17.3.2 編寫代碼爬取 /360
17.3.3 實例總結 /361
17.4 智聯招聘數據採集 /361
17.4.1 分析網站 /362
17.4.2 編寫代碼爬取 /365
17.4.3 實例總結 /367

附錄A 爬蟲法律法規 /368
附錄B 實驗環境的搭建方法及說明 /371
附錄C Python常見面試題精選 /375