《Python爬蟲從菜鳥到高手》是2023年9月1日清華大學出版社出版的圖書,作者:李寧。
基本介紹
- 中文名:Python爬蟲從菜鳥到高手
- 作者:李寧
- 出版時間:2023年9月1日
- 出版社:清華大學出版社
- ISBN:9787302640516
- 定價:119 元
- 印次:1-1
- 印刷日期:2023.09.25
內容簡介,圖書目錄,
內容簡介
本書從實戰角度系統論述了Python 爬蟲技術的核心知識,並通過大量的真實項目幫助讀者深入掌握Python 爬蟲技術及其實現。本書提供了大量實戰案例,演繹採用各種技術編寫Python 爬蟲的方式。讀者可以任意組合使用這些技術,完成非常複雜的爬蟲套用。本書共20 章,分為五篇。第一篇:基礎知識(第1~2 章),主要包括Python 編程環境的搭建、IDE 的安裝和使用、HTTP 的基礎知識、網頁基礎(HTML、CSS、JavaScript)、爬蟲的基本原理、Session、Cookie。第二篇:網路庫(第3~5 章),主要包括網路庫urllib、urllib3 和requests 的核心使用方法,例如,傳送HTTP 請求、處理逾時、設定HTTP 請求頭、處理中文字元、搭建和使用代理、解析連結、Robots 協定等。第三篇:解析庫(第6~9 章),主要包括3 個常用解析庫(lxml、Beautiful Soup 和pyquery)的使用方法,同時介紹了多種用於分析HTML 代碼的技術,例如,正則表達式、XPath、CSS 選擇器、方法選擇器等。第四篇:數據存儲(第10~11 章),主要包括Python 中數據存儲的解決方案,如檔案存儲和SQLite 資料庫。第五篇:爬蟲高級套用(第12~20 章),主要包括Python 爬蟲的一些高級技術,如抓取異步數據、Selenium、Splash、抓取移動App 數據、Appium、多執行緒爬蟲、爬蟲框架Scrapy、通過OpenCV 技術識別驗證碼;最後給出一個綜合的實戰案例,該案例綜合了Python 爬蟲、數據存儲、PyQt、多執行緒、數據可視化、Web 等多種技術實現一個可視化爬蟲。
圖書目錄
第一篇基礎知識
第1章開發環境配置3
1.1搭建Python編程環境.3
1.1.1獲取Python安裝包3
1.1.2安裝Windows版的Python開發包4
1.1.3安裝macOS版的Python開發包4
1.1.4安裝Linux版的Python開發包.5
1.2安裝AnacondaPython開發環境5
1.3消除PythonREPL中的錯誤和警告6
1.4安裝PyCharm.7
1.5配置PyCharm.8
1.6小結9
第2章爬蟲基礎10
2.1HTTP基礎.10
2.1.1URI和URL10
2.1.2超文本11
2.1.3HTTP與HTTPS11
2.1.4HTTP的請求過程13
2.1.5請求16
2.1.6回響19
2.2網頁基礎22
2.2.1HTML基礎.22
2.2.2CSS基礎.23
2.2.3CSS選擇器.23
2.2.4JavaScript25
2.3爬蟲的基本原理25
2.3.1爬蟲的分類26
2.3.2爬蟲抓取數據的方式和手段.26
2.4Session與Cookie27
6Python爬蟲從菜鳥到高手
2.4.1靜態頁面和動態頁面.27
2.4.2無狀態HTTP與Cookie28
2.4.3利用Session和Cookie保持狀態28
2.4.4查看網站的Cookie29
2.4.5HTTP狀態何時會失效30
2.5項目實戰:抓取所有的網路資源31
實例2.1基於遞歸算法的爬蟲的代碼.34
2.6項目實戰:抓取部落格文章列表.35
實例2.2抓取部落格園首頁文章列表的爬蟲36
2.7小結38
第二篇網路庫
第3章網路庫urllib41
3.1urllib簡介41
3.2傳送請求與獲得回響42
3.2.1用urlopen函式傳送HTTPGET請求.42
實例3.1使用HTTPResponse讀取回響數據42
3.2.2用urlopen函式傳送HTTPPOST請求.43
實例3.2使用urlopen函式傳送HTTPPOST請求,並獲得返回數據43
3.2.3請求逾時44
實例3.3捕捉urlopen函式的逾時異常.45
3.2.4設定HTTP請求頭45
實例3.4修改和提交HTTP請求頭.45
3.2.5設定中文HTTP請求頭.47
實例3.5設定和解碼中文HTTP請求頭.48
3.2.6請求基礎驗證頁面49
實例3.6請求基礎驗證頁面.50
3.2.7搭建代理與使用代理.53
實例3.7通過代理訪問Web頁面55
3.2.8讀取和設定Cookie55
實例3.8讀取Cookie.56
實例3.9將Cookie保存為Mozille格式和LWP格式57
實例3.10裝載和傳送Cookie.58
3.3異常處理59
3.3.1URLError59
實例3.11捕捉髮送請求拋出的異常.59
3.3.2HTTPError60
實例3.12使用HTTPError類和URLError類捕捉異常.60
3.4解析連結61
3.4.1拆分與合併URL方法一(urlparse與urlunparse)61
實例3.13使用urlparse函式和urlunparse函式拆分與合併URL62
3.4.2拆分與合併URL方法二(urlsplit與urlunsplit)63
實例3.14使用urlsplit函式和urlunsplit函式拆分與合併URL.63
3.4.3連線URL(urljoin)64
實例3.15使用urljoin函式連線URL64
3.4.4URL編碼(urlencode).65
實例3.16使用urlencode函式編碼包含中文的URL65
3.4.5編碼與解碼(quote與unquote)65
實例3.17使用quote函式和unquote對URL中的參數編碼和解碼65
3.4.6參數轉換(parse_qs與parse_qsl)65
實例3.18拆分由多個參數組成的字元串66
3.5Robots協定66
3.5.1Robots協定簡介66
3.5.2分析Robots協定68
實例3.19用robots.txt約束爬蟲68
3.6小結69
第4章網路庫urllib3.70
4.1urllib3簡介70
4.2urllib3模組70
4.3傳送HTTPGET請求71
實例4.1獲取百度的搜尋結果.71
4.4傳送HTTPPOST請求72
實例4.2傳送HTTPPOST請求,並接收返回結果.72
4.5HTTP請求頭73
實例4.3搜尋天貓商城中的數據.74
4.6HTTP回響頭76
實例4.4獲取並輸出HTTP回響頭信息.76
4.7上傳檔案76
實例4.5將任意檔案上傳到服務端.77
4.8逾時78
實例4.6連線逾時和讀取逾時.78
4.9小結79
第5章網路庫requests80
5.1基本用法80
8Python爬蟲從菜鳥到高手
5.1.1requests的HelloWorld80
實例5.1傳送HTTPGET請求,並獲取回響的返回信息80
5.1.2HTTPGET請求81
實例5.2設定HTTPGET請求參數.81
5.1.3添加HTTP請求頭82
實例5.3設定HTTP請求頭.82
5.1.4抓取二進制數據83
實例5.4抓取並保存圖像.83
5.1.5HTTPPOST請求84
實例5.5傳送HTTPPOST請求,並獲取回響數據.84
5.1.6回響數據84
實例5.6向簡書傳送HTTPGET請求,並輸出回響結果85
5.2高級用法85
5.2.1上傳檔案86
實例5.7上傳本地圖像.86
5.2.2處理Cookie87
實例5.8獲取和傳送Cookie.87
5.2.3使用同一個會話(Session).88
實例5.9Session與Cookie密切配合維護會話.88
5.2.4SSL證書驗證.89
實例5.10捕捉證書驗證異常.89
5.2.5使用代理92
實例5.11通過代理訪問天貓首頁,並輸出回響內容92
5.2.6逾時92
實例5.12連線逾時和讀取逾時.93
5.2.7身份驗證93
實例5.13傳送Basic驗證請求94
5.2.8將請求打包94
實例5.14封裝和傳送請求.94
5.3小結95
第三篇解析庫
第6章正則表達式99
6.1使用正則表達式99
6.1.1使用match方法匹配字元串.99
實例6.1利用match方法與group方法實現模式匹配99
6.1.2使用search方法在一個字元串中查找模式100
實例6.2使用match方法與search方法進行匹配和搜尋100
6.1.3匹配多個字元串101
實例6.3擇一匹配符與匹配和搜尋.101
6.1.4匹配任何單個字元102
實例6.4點符號的匹配與替換.102
6.1.5使用字元集103
實例6.5字元集和擇一匹配符的用法和差別104
6.1.6重複、可選和特殊字元.105
實例6.6各種匹配符號的用法.106
6.1.7分組108
實例6.7在正則表達式中使用分組.108
6.1.8匹配字元串的起始和結尾及單詞邊界109
實例6.8匹配字元串的起始和結束位置及單詞的邊界110
6.1.9使用findall函式和finditer函式查找每一次出現的位置111
實例6.9使用findall函式和finditer函式搜尋字元串.111
6.1.10用sub函式和subn函式搜尋與替換113
實例6.10使用sub函式和subn函式搜尋和替換字元串.113
6.1.11使用split函式分隔字元串114
實例6.11使用split函式分隔字元串114
6.2一些常用的正則表達式115
實例6.12使用Email、IP位址和Web地址的正則表達式115
6.3項目實戰:抓取小說目錄和全文116
實例6.13抓取小說目錄爬蟲的完整實現118
6.4小結120
第7章lxml與XPath121
7.1lxml基礎121
7.1.1安裝lxml121
7.1.2操作XML122
實例7.1使用lxml獲取XML的節點文本和屬性值122
7.1.3操作HTML.124
實例7.2使用lxml獲取HTML文檔的節點文本和屬性值.124
7.2XPath125
7.2.1XPath概述125
7.2.2使用XPath125
實例7.3利用lxml和XPath提取HTML檔案中的信息125
7.2.3選取所有節點127
實例7.4使用XPath選取HTML檔案中的節點127
7.2.4選取子節點128
10Python爬蟲從菜鳥到高手
實例7.5使用XPath根據規則選取節點.129
7.2.5選取父節點129
實例7.6使用XPath選取節點和父節點,並輸出class屬性值130
7.2.6屬性匹配與獲取130
實例7.7根據href屬性過濾節點130
7.2.7多屬性匹配131
實例7.8使用and和or選取節點131
7.2.8按序選擇節點132
實例7.9使用XPath和索引獲取特定節點132
7.2.9節點軸選擇133
實例7.10使用XPath和節點軸選擇方法獲取特定的節點133
7.2.10在Chrome中自動獲得XPath代碼.135
實例7.11利用requests庫抓取京東商城導航條文本135
7.2.11使用Chrome驗證XPath137
7.3項目實戰:抓取豆瓣Top250圖書榜單138
實例7.12抓取豆瓣Top250圖書榜單爬蟲完整實現141
7.4項目實戰:抓取起點中文網的小說信息142
實例7.13抓取起點中文網小說信息爬蟲完整實現144
7.5小結146
第8章BeautifulSoup庫.147
8.1BeautifulSoup簡介147
8.2BeautifulSoup基礎147
8.2.1安裝BeautifulSoup147
8.2.2選擇解析器148
8.2.3編寫第一個BeautifulSoup程式149
實例8.1使用BeautifulSoup分析HTML代碼.149
8.3節點選擇器150
8.3.1選擇節點150
實例8.2使用BeautifulSoup節點選擇器獲取特定節點的信息.151
8.3.2嵌套選擇節點152
實例8.3嵌套選擇HTML文檔中的節點152
8.3.3選擇子節點153
實例8.4選取子節點和子孫節點.154
8.3.4選擇父節點156
實例8.5獲取a節點的父節點.156
8.3.5選擇兄弟節點157
實例8.6獲取li節點的同級節點158
8.4方法選擇器159
8.4.1find_all方法.159
實例8.7使用find_all方法搜尋ul節點和li節點.160
實例8.8根據屬性值定位節點.161
實例8.9通過節點內容定位文本節點.162
8.4.2find方法.163
實例8.10搜尋特定條件的節點.163
8.5CSS選擇器.164
8.5.1基本用法164
實例8.11使用CSS選擇器查詢特定的節點164
8.5.2嵌套選擇節點165
實例8.12混合使用CSS選擇器和方法選擇器搜尋特定節點165
8.5.3獲取屬性值與文本167
實例8.13使用CSS選擇器選取特定的a節點167
8.5.4通過瀏覽器獲取CSS選擇器代碼168
實例8.14使用CSS選擇器獲取京東上傳導航條的連結文本168
8.6實戰案例:抓取酷狗網路紅歌榜170
實例8.15抓取酷狗網路紅歌榜爬蟲完整實現171
8.7小結172
第9章pyquery庫173
9.1pyquery簡介173
9.2pyquery基礎173
9.2.1安裝pyquery173
9.2.2pyquery的基本用法.174
實例9.1通過3種方式為PyQuery對象傳入HTML文檔174
9.3CSS選擇器.175
實例9.2使用pyquery和CSS選擇器分析和提取HTML代碼中的信息175
9.4查找節點177
9.4.1查找子節點177
實例9.3使用find方法和children方法查找子節點177
9.4.2查找父節點178
實例9.4使用parent方法和parents方法獲取父節點178
9.4.3查找兄弟節點179
實例9.5使用siblings方法查找兄弟節點179
9.4.4獲取節點信息180
實例9.6獲取節點的各種信息.182
9.5修改節點184
9.5.1添加和移除節點的樣式(addClass和removeClass)184
實例9.7修改節點的樣式185
12Python爬蟲從菜鳥到高手
9.5.2修改節點屬性和內容(attr、removeAttr、text和html).186
實例9.8attr方法、removeAttr方法、text方法和html方法的用法演示187
9.5.3刪除節點(remove)188
實例9.9使用remove方法刪除節點.189
9.6偽類選擇器190
實例9.10偽類選擇器用法展示.190
9.7項目實戰:抓取噹噹圖書排行榜191
實例9.11分析噹噹圖書搜尋頁面.194
9.8項目實戰:抓取京東商城手機銷售排行榜196
實例9.12分析京東商城搜尋頁面,並將結果保存到Excel文檔中.197
9.9小結201
第四篇數據存儲
第10章檔案存儲205
10.1打開檔案205
10.2操作檔案的基本方法206
10.2.1讀檔案和寫檔案207
實例10.1使用不同模式操作檔案.207
10.2.2讀行和寫行208
實例10.2按行讀寫文本檔案.209
10.3使用FileInput對象讀取檔案210
實例10.3獲取檔案內容和相關屬性.210
10.4處理XML格式的數據211
10.4.1讀取與搜尋XML檔案.211
實例10.4獲取XML檔案的節點和屬性信息211
10.4.2字典轉換為XML字元串.212
實例10.5將字典對象轉換為格式化的XML檔案213
10.4.3XML字元串轉換為字典214
實例10.6將XML檔案轉換為字典對象.214
10.5處理JSON格式的數據.215
10.5.1JSON字元串與字典互相轉換.216
實例10.7字典與JSON字元串互相轉換216
10.5.2將JSON字元串轉換為類實例217
實例10.8將product.json檔案轉換為Product對象.218
10.5.3將類實例轉換為JSON字元串219
實例10.9將Product對象轉換為JSON檔案.219
10.5.4類實例列表與JSON字元串互相轉換219
實例10.10將Product對象列表與JSON檔案互相轉換.219
10.6將JSON字元串轉換為XML字元串220
實例10.11將products.json檔案轉換為XML檔案220
10.7CSV檔案存儲221
10.7.1寫入CSV檔案.221
實例10.12將數據寫入CSV檔案222
10.7.2讀取CSV檔案.223
實例10.13讀取CSV檔案中的數據224
10.8小結224
第11章資料庫存儲.225
11.1SQLite資料庫225
11.1.1管理SQLite資料庫225
11.1.2用Python操作SQLite資料庫.228
實例11.1讀寫SQLite資料庫中的數據228
11.2項目實戰:抓取豆瓣音樂排行榜230
實例11.2抓取豆瓣音樂Top250排行榜爬蟲完整實現232
11.3項目實戰:抓取豆瓣電影排行榜235
實例11.3抓取豆瓣電影Top250排行榜爬蟲的完整實現236
11.4小結239
第五篇爬蟲高級套用
第12章抓取異步數據.243
12.1異步載入與AJAX243
12.2基本原理243
實例12.1使用jQuery傳送請求,並獲取數據244
12.3逆向工程246
12.4提取結果249
實例12.2使用requests訪問異步請求的URL.249
12.5項目實戰:支持搜尋功能的圖片爬蟲250
實例12.3圖片爬蟲完整實現.253
12.6項目實戰:抓取京東圖書評價255
實例12.4抓取京東圖書評價爬蟲完整實現256
12.7小結259
第13章可見即可“爬”:Selenium.260
13.1安裝Selenium260
14Python爬蟲從菜鳥到高手
13.2安裝WebDriver261
13.2.1安裝ChromeDriver261
13.2.2安裝EdgeWebDriver262
13.2.3安裝其他瀏覽器的WebDriver263
13.3Selenium的基本使用方法264
實例13.1使用Selenium控制瀏覽器264
13.4查找節點267
13.4.1查找單個節點267
實例13.2使用find_element查找單個節點267
13.4.2查找多個節點269
實例13.3使用find_elements查找多個節點269
13.5節點互動270
實例13.4模擬單擊瀏覽器中的按鈕.270
13.6動作鏈271
實例13.5模擬滑鼠移動動作,自動控制京東商城首頁271
實例13.6模擬拖拽動作移動節點.273
13.7執行JavaScript代碼274
實例13.7動態執行JS代碼滾動京東商城首頁.274
13.8獲取節點信息275
實例13.8使用SeleniumAPI獲取京東商城首頁HTML中的信息275
13.9管理Cookies.276
實例13.9用SeleniumAPI讀寫Cookie.276
13.10改變節點的屬性值277
實例13.10改變百度搜尋按鈕的位置.277
實例13.11修改京東商城首頁的導航條選單278
13.11項目實戰:抓取QQ空間說說的內容.279
實例13.12抓取QQ空間說說內容爬蟲完整代碼.279
13.12小結281
第14章基於Splash的爬蟲.282
14.1Splash基礎.282
14.1.1Splash功能簡介.282
14.1.2安裝Docker282
14.1.3安裝Splash.283
14.2SplashLua腳本285
14.2.1第一個Lua腳本285
實例14.1獲取京東商城首頁的標題.285
14.2.2異步處理286
實例14.2異步訪問多個URL,並顯示這些URL對應的截圖286
14.2.3Splash對象屬性.287
14.2.4go方法290
實例14.3傳送POST請求,並返回HTML代碼和Har圖表.291
14.2.5wait方法.292
14.2.6jsfunc方法292
實例14.4調用JavaScript函式獲取節點信息292
14.2.7evaljs方法293
14.2.8runjs方法293
14.2.9autoload方法293
實例14.5使用jQuery獲取a節點的總數293
14.2.10call_later方法294
實例14.6延遲獲取頁面截圖.294
14.2.11http_get方法296
實例14.7傳送HTTPGET請求,並接收返回結果296
14.2.12http_post方法296
實例14.8傳送HTTPPOST請求,並接收返回結果.297
14.2.13set_content方法297
14.2.14html方法298
14.2.15png方法299
14.2.16jpeg方法299
14.2.17har方法299
14.2.18其他方法299
14.3使用CSS選擇器303
14.3.1select方法303
實例14.9在京東商城首頁搜尋框中輸入關鍵字303
14.3.2select_all方法304
實例14.10查找京東商城首頁HTML代碼中的a節點,並返回相關數據304
14.4模擬滑鼠鍵盤動作305
實例14.11模擬單擊京東商城首頁搜尋按鈕305
14.5SplashHTTPAPI306
實例14.12返回PNG格式圖像並保存.309
14.6項目實戰:使用SplashLua抓取京東搜尋結果.310
實例14.13抓取京東搜尋結果爬蟲完整實現代碼310
14.7小結312
第15章抓取移動App的數據313
15.1使用Charles313
15.1.1抓取HTTP數據包313
15.1.2安裝PC端證書315
15.1.3在手機端安裝證書.316
15.1.4監聽HTTPS數據包.317
16Python爬蟲從菜鳥到高手
15.2使用mitmproxy318
15.2.1安裝mitmproxy318
15.2.2在PC端安裝mitmproxy證書319
15.2.3在移動端安裝mitmproxy證書321
15.2.4mitmproxy的主要功能.322
15.2.5設定手機的代理323
15.2.6用mitmproxy監聽App的請求與回響數據324
15.2.7使用mitmproxy編輯請求信息325
15.2.8mitmdump與Python對接327
15.2.9使用mitmweb監聽請求與回響331
15.3項目實戰:實時抓取“得到”App線上課程.332
實例15.1爬蟲完整代碼.334
15.4使用Appium在移動端抓取數據337
15.4.1Appium安裝與配置337
15.4.2Appium的基本使用方法340
15.4.3使用Python控制手機App344
實例15.2控制微信App.344
15.4.4AppiumPythonClientAPI.345
15.5小結348
第16章多執行緒和多進程爬蟲349
16.1執行緒與進程349
16.1.1進程349
16.1.2執行緒349
16.2Python與執行緒350
16.2.1使用單執行緒執行程式.350
實例16.1單執行緒調用函式演示.350
16.2.2使用多執行緒執行程式.351
實例16.2多執行緒調用函式演示.351
16.2.3為執行緒函式傳遞參數.352
實例16.3為執行緒函式傳遞參數.352
16.2.4執行緒和鎖353
實例16.4執行緒加鎖與解鎖.353
16.3高級執行緒模組(threading)354
16.3.1Thread類與執行緒函式.355
實例16.5使用Thread.join方法等待所有執行緒執行完畢355
16.3.2Thread類與執行緒對象.356
實例16.6用Thread對象管理執行緒356
16.3.3從Thread類繼承357
實例16.7通過Thread的子類管理執行緒357
16.4執行緒同步359
16.4.1執行緒鎖360
實例16.8使用執行緒鎖讓for循環變成原子操作360
16.4.2信號量361
實例16.9創建、獲取和釋放信號量.362
實例16.10用信號量與執行緒鎖模擬糖果機363
16.5生產者-消費者問題與queue模組.365
實例16.11生產者-消費者模擬器365
16.6多進程367
實例16.12Pool對象與多進程.367
16.7項目實戰:抓取豆瓣音樂Top250排行榜(多執行緒版)368
實例16.13多執行緒版抓取音樂Top250排行榜爬蟲完整實現369
16.8項目實戰:抓取豆瓣音樂Top250排行榜(多進程版)371
實例16.14多進程版抓取音樂Top250排行榜爬蟲完整實現371
16.9小結373
第17章網路爬蟲框架:Scrapy基礎374
17.1Scrapy基礎知識374
17.1.1Scrapy簡介374
17.1.2Scrapy安裝375
17.1.3ScrapyShell抓取Web資源.375
17.2用Scrapy編寫網路爬蟲.378
17.2.1創建和使用Scrapy工程378
實例17.1使用Scrapy創建第一個爬蟲程式378
17.2.2在PyCharm中使用Scrapy.379
17.2.3在PyCharm中使用擴展工具運行Scrapy程式381
17.2.4使用Scrapy抓取數據,並通過XPath指定解析規則382
實例17.2過濾博文列表.382
17.2.5將抓取到的數據保存為多種格式的檔案383
實例17.3通過Item類保存抓取到的數據384
17.2.6使用ItemLoader保存單條抓取的數據385
實例17.4用ItemLoader對象和XPath獲取並保存文章相關信息386
17.2.7使用ItemLoader保存多條抓取的數據387
實例17.5保存部落格頁面中的所有部落格數據387
17.2.8抓取多個URL389
實例17.6抓取多個部落格頁面的內容.389
17.3小結390
18Python爬蟲從菜鳥到高手
第18章網路爬蟲框架:Scrapy高級技術391
18.1處理登錄頁面391
實例18.1Scrapy模擬登錄.391
18.2處理帶隱藏文本框的登錄頁面.394
實例18.2校驗字元串.395
18.3通過API抓取天氣預報數據396
實例18.3抓取天氣預報數據.397
18.4從CSV格式轉換到JSON格式.402
實例18.4抓取京東商城圖像信息,並保存這些信息403
18.5下載器中間件406
實例18.5模擬瀏覽器HTTP請求頭的中間件.408
18.6爬蟲中間件410
實例18.6使用爬蟲中間件設定HTTP請求頭,並修改HTTP回響狀態碼.412
18.7Item管道413
實例18.7使用Item管道抓取美女圖片414
18.8通用爬蟲422
實例18.8抓取中華網的網際網路類新聞內容426
18.9小結430
第19章識別驗證碼.431
19.1使用OCR技術識別圖形驗證碼.431
19.1.1OCR技術432
19.1.2使用OCR技術前的準備工作.432
19.1.3識別圖像中的字元.433
實例19.1使用image_to_text函式識別圖像中的字元433
19.1.4識別二值圖像中的字元.433
實例19.2使用point函式將彩色圖像轉換為二值圖像,再識別其中的字元434
實例19.3利用NumPy數組將真色彩圖像轉換為二值圖像,並識別其中的字元435
19.1.5識別網站中的驗證碼.436
實例19.4使用selenium和OCR自動登錄網站436
19.2使用OpenCV識別滑動驗證碼的移動距離.438
19.2.1實現原理438
19.2.2高斯濾波439
實例19.5使用GaussianBlur函式對圖像進行高斯濾波處理.439
19.2.3Canny邊緣檢測.440
實例19.6檢測並顯示花朵的邊緣.441
19.2.4提取輪廓442
19.2.5繪製輪廓442
實例19.7繪製蜘蛛的輪廓.443
19.2.6輪廓面積與周長444
實例19.8檢測滑動驗證碼中滑動和缺口的輪廓444
19.3小結446
第20章綜合爬蟲項目:可視化爬蟲447
20.1項目簡介447
20.2主界面設計和實現448
20.3獲取商品頁數和每頁商品數.450
20.4並發抓取商品列表451
20.5資料庫操作類453
20.6情感分析456
20.7抓取和分析商品評論數據.456
20.8可視化評論數據458
20.9小結460