Python爬蟲技術——深入理解原理、技術與開發 ( 簡體 字) |
作者:李寧 | 類別:1. -> 程式設計 -> Python 2. -> 程式設計 -> 網路爬蟲 |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 52264 詢問書籍請說出此書號!【有庫存】 NT售價: 445 元 |
出版日:1/1/2020 |
頁數:488 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302535683 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:Python現在非常火爆。但 Python就和英語一樣,如果只會 Python語言,就相當于只能用英語進行日常會話。然而,真正的英語高手是可以作為專業領域翻譯的,如 IT、金融、數學等專業領域。 Python也是一樣,光學習 Python語言是不行的,要想找到更好的工作,或得到更高的薪水,需要學會用 Python做某一領域的應用。 現在 Python應用的熱門領域比較廣,例如人工智能,不過人工智能不光涉及 Python語言本身的技術,還涉及數學領域的知識,雖然比較火爆,但絕對不是短時間可以掌握的。然后有一個領域與人工智能的火爆程度相當,但不像人工智能那樣難入門,這就是爬蟲領域。 為什么爬蟲領域如此火爆呢?其實爬蟲的基本功能就是從網上下載各種類型的數據(如 HTML、圖像文件等)。但不要小瞧這些下載的數據,因為這些數據將成為很多應用的數據源。例如,著名的 Google搜索引擎,每天都會有數以億計的查詢請求,而搜索引擎為這些請求返回的數據,都是來源于強大的爬蟲。編寫搜索引擎的第一步就是通過爬蟲抓取整個互聯網的數據,然后將這些數據庫保存到本地(以特定的數據格式),接下來就是對這些數據進行分析整理。然后才可以通過搜索引擎進行查詢。雖然搜索引擎的實現技術非常多,也非常復雜,但爬蟲是 1,其他的所有技術都是 0,如果沒有爬蟲搜集數據,再強大的分析程序也毫無用武之地。 除了搜索引擎外,人工智能中的重要分支深度學習也需要爬蟲抓取的數據來訓練模型。例如,要想訓練一個識別金字塔的深度學習模型,就需要大量與金字塔相關的圖片進行訓練。最簡單的方式,就是使用百度或谷歌搜索金字塔圖片,然后用爬蟲抓取這些圖片到本地。這是利用了搜索引擎通過關鍵字分類的特性,并且重新利用了這些分類的圖片。 通過這些例子可以了解到,學習爬蟲是進入其他更高端領域的鑰匙,所以學習 Python爬蟲將成為第一個需要選擇的熱門領域。 盡管爬蟲的基本功能是下載文件,但一個復雜的爬蟲應用,可不光涉及網絡技術。將數據下載后,還需要對數據進行分析,提取需要的信息,以及進行數據可視化,甚至需要一個基于 UI的可視化爬蟲。所以與爬蟲有關的技術還是很多的。 由于 Pythonp爬蟲涉及的技術很多,學習資料過于分散。所以,筆者覺得很有必要編寫一本全面介紹 Python爬蟲實戰類的書籍,在書中分享筆者對 Python爬蟲以及相關技術的理解和經驗,幫助同行和感興趣的朋友快速入門,并利用 Python語言編寫各種復雜的爬蟲應用。筆者希望本書能起到拋磚引玉的作用,使讀者對 Python爬蟲以及相關技術產生濃厚的興趣,并能成功進入 Python爬蟲領域。加油!高薪的工作在等著你們! 本書使用最新的 Python 3編寫,并在書中探討了關于 Python爬蟲的核心技術。全書分 5篇,共 20章。內容涵蓋 Python爬蟲的基礎知識、常用網絡庫、常用分析庫、數據存儲技術、異步數據處理、可見即可爬技術、抓取移動 App、Scrapy等。本書還包含 20多個真實的項目,以便讓讀者身臨其境 地體驗 Python爬蟲的魅力。 限于篇幅,本書無法囊括 Python爬蟲以及相關技術的方方面面,只能盡自己所能,與大家分享盡可能多的知識和經驗。相信通過本書的學習,讀者可以擁有進一步深入學習的能力,達到 Python爬蟲高手的程度也只是時間問題。 最后,筆者希望本書能為國內的 Python爬蟲以及相關技術的普及,為廣大從業者提供有價值的實踐經驗并幫助他們快速上手貢獻綿薄之力。 編著者 2019年 10月 |
內容簡介:本書從實戰角度系統講解 Python爬蟲的核心知識點,并通過大量的真實項目讓讀者熟練掌握 Python爬蟲技術。本書用 20多個實戰案例,完美演繹了使用各種技術編寫 Python爬蟲的方式,讀者可以任意組合這些技術,完成非常復雜的爬蟲應用。 全書共 20章,分為 5篇。第 1篇基礎知識(第 1、2章),主要包括 Python運行環境的搭建、 HTTP基礎、網頁基礎( HTML、CSS、JavaScript等)、爬蟲的基本原理、 Session與 Cookie。第 2篇網絡庫(第 3∼ 6章),主要包括網絡庫 urllib、urllib3、requests和 Twisted的核心使用方法,如發送 HTTP請求、處理超時、設置 HTTP請求頭、搭建和使用代理、解析鏈接、 Robots協議等。第 3篇解析庫(第 7∼ 10章),主要包括 3個常用解析庫( lxml、Beautiful Soup和 pyquery)的使用方法,同時介紹多種用于分析 HTML代碼的技術,如正則表達式、 XPath、CSS選擇器、方法選擇器等。第 4篇數據存儲(第 11、12章),主要包括 Python中數據存儲的解決方案,如文件存儲和數據庫存儲,其中數據庫存儲包括多種數據庫,如本地數據庫 SQLite、網絡數據庫 MySQL以及文檔數據庫 MongoDB。第 5篇爬蟲高級應用(第 13∼ 20章),主要包括 Python爬蟲的一些高級技術,如抓取異步數據、 Selenium、Splash、抓取移動 App數據、 Appium、多線程爬蟲、爬蟲框架 Scrapy,最后給出一個綜合的實戰案例,綜合了 Python爬蟲、數據存儲、 PyQt5、多線程、數據可視化、Web等多種技術實現一個可視化爬蟲。 本書可以作為廣大計算機軟件技術開發者、互聯網技術研究人員學習“爬蟲技術”的參考用書。也可以作為高等院校計算機科學與技術、軟件工程、人工智能等專業的教學參考用書。 |
目錄:第1篇基礎知識 第1章開發環境配置.2
1.1安裝官方的Python運行環境.2
1.2 配置PATH環境變量.5
1.3安裝AnacondaPython開發環境.6
1.4安裝PyCharm.7
1.5配置PyCharm.8
1.6 小結.10
第2章爬蟲基礎.11
2.1HTTP基礎11
2.1.1 URI和URL11
2.1.2 超文本12
2.1.3 HTTP與HTTPS.12
2.1.4 HTTP的請求過程.15
2.1.5 請求17
2.1.6 響應20
2.2網頁基礎23
2.2.1 HTML.23
2.2.2 CSS24
2.2.3 CSS選擇器.25
2.2.4 JavaScript.27
2.3爬蟲的基本原理27
2.3.1 爬蟲的分類.27
2.3.2 爬蟲抓取數據的方式和手段.28
2.4Session與Cookie.28
2.4.1 靜態頁面和動態頁面.29
2.4.2 無狀態HTTP與Cookie30
2.4.3 利用Session和Cookie保持狀態.30
2.4.4 查看網站的Cookie31
2.4.5 HTTP狀態何時會失效32
CONTENTS目錄 2.5實戰案例:抓取所有的網絡資源.33
2.6實戰案例:抓取博客文章列表.37
2.7小結.40
第2篇網絡庫 第3章網絡庫urllib.42
3.1 urllib簡介42
3.2 發送請求與獲得響應.43
3.2.1 用urlopen函數發送HTTPGET請求43 3.2.2 用urlopen函數發送HTTPPOST請求44 3.2.3 請求超時.45
3.2.4 設置HTTP請求頭46
3.2.5 設置中文HTTP請求頭.48
3.2.6 請求基礎驗證頁面.50
3.2.7 搭建代理與使用代理.54
3.2.8 讀取和設置Cookie56
3.3 異常處理60
3.3.1URLError60
3.3.2HTTPError61
3.4 解析鏈接62
3.4.1 拆分與合并URL(urlparse與urlunparse).62 3.4.2 另一種拆分與合并URL的方式(urlsplit與urlunsplit)63 3.4.3 連接URL(urljoin).65
3.4.4 URL編碼(urlencode).65
3.4.5 編碼與解碼(quote與unquote).66
3.4.6 參數轉換(parse_qs與parse_qsl)66
3.5 Robots協議67
3.5.1Robots協議簡介.67
3.5.2分析Robots協議68
3.6小結.69
第4章網絡庫urllib3.70
4.1urllib3簡介70
4.2urllib3模塊70
4.3發送HTTPGET請求71
4.4發送HTTPPOST請求72
4.5HTTP請求頭74
4.6HTTP響應頭76
4.7上傳文件76
4.8超時.78
4.9小結.79
第5章網絡庫requests.80
5.1基本用法80
5.1.1 requests的HelloWorld81
5.1.2 GET請求81
5.1.3 添加HTTP請求頭82
5.1.4 抓取二進制數據83
5.1.5 POST請求84
5.1.6 響應數據.85
5.2高級用法87
5.2.1 上傳文件.88
5.2.2 處理Cookie89
5.2.3 使用同一個會話(Session)90
5.2.4 SSL證書驗證91
5.2.5 使用代理.94
5.2.6 超時95
5.2.7 身份驗證.97
5.2.8 將請求打包.97
5.3小結.98
第6章Twisted網絡框架99
6.1異步編程模型.99
6.2Reactor(反應堆)模式.101
6.3HelloWorld,Twisted框架101
6.4用Twisted實現時間戳客戶端103
6.5用Twisted實現時間戳服務端104
6.6小結.105
第3篇解析庫 第7章正則表達式.108
7.1使用正則表達式108
7.1.1 使用match方法匹配字符串108
7.1.2 使用search方法在一個字符串中查找模式.109 7.1.3 匹配多個字符串110
7.1.4 匹配任何單個字符.111
7.1.5 使用字符集.112
7.1.6 重復、可選和特殊字符114
7.1.7 分組117
7.1.8 匹配字符串的起始和結尾以及單詞邊界.118 7.1.9 使用findall和finditer查找每一次出現的位置.120 7.1.10用sub和subn搜索與替換.121
7.1.11使用split分隔字符串122
7.2一些常用的正則表達式.123
7.3項目實戰:抓取小說目錄和全文.124
7.4項目實戰:抓取貓眼電影Top100榜單128
7.5項目實戰:抓取糗事百科網的段子133
7.6小結.136
第8章lxml與XPath.137
8.1lxml基礎137
8.1.1 安裝lxml137
8.1.2 操作XML.138
8.1.3 操作HTML.140
8.2XPath.141
8.2.1 XPath概述141
8.2.2 使用XPath141
8.2.3 選取所有節點143
8.2.4 選取子節點.145
8.2.5 選取父節點.146
8.2.6 屬性匹配與獲取146
8.2.7 多屬性匹配.147
8.2.8 按序選擇節點148
8.2.9 節點軸選擇.149
8.2.10 在Chrome中自動獲得XPath代碼151 8.2.11 使用Chrome驗證XPath.153
8.3項目實戰:抓取豆瓣Top250圖書榜單154
8.4項目實戰:抓取起點中文網的小說信息.158
8.5小結.161
第9章BeautifulSoup庫.162
9.1BeautifulSoup簡介162
9.2BeautifulSoup基礎162
9.2.1 安裝BeautifulSoup163
9.2.2 選擇解析器.164
9.2.3 編寫第一個BeautifulSoup程序164
9.3節點選擇器.165
9.3.1 選擇節點.165
9.3.2 嵌套選擇節點167
9.3.3 選擇子節點.168
9.3.4 選擇父節點.171
9.3.5 選擇兄弟節點172
9.4方法選擇器.174
9.4.1 find_all方法.174
9.4.2 find方法.177
9.5CSS選擇器.178
9.5.1 基本用法.179
9.5.2 嵌套選擇節點180
9.5.3 獲取屬性值與文本.181
9.5.4 通過瀏覽器獲取CSS選擇器代碼.182
9.6實戰案例:抓取租房信息184
9.7實戰案例:抓取酷狗網絡紅歌榜.188
9.8小結.191
第10章pyquery庫.192
10.1pyquery簡介.192
10.2pyquery基礎.192
10.2.1 安裝pyquery.193
10.2.2 pyquery的基本用法193
10.3CSS選擇器.194
10.4查找節點.196
10.4.1 查找子節點.196
10.4.2 查找父節點.197
10.4.3 查找兄弟節點198
10.4.4 獲取節點信息199
10.5 修改節點.203
10.5.1 添加和移除節點的樣式(addClass和removeClass).204 10.5.2 修改節點屬性和文本內容(attr、removeAttr、text和html)205 10.5.3 刪除節點(remove).207
10.6 偽類選擇器.208
10.7 項目實戰:抓取當當圖書排行榜210
10.8 項目實戰:抓取京東商城手機銷售排行榜213 10.9 小結219
第4篇數據存儲 第11章文件存儲222
11.1打開文件.222
11.2 操作文件的基本方法.224
11.2.1 讀文件和寫文件224
11.2.2 讀行和寫行.226
11.3 使用FileInput對象讀取文件.227
11.4 處理XML格式的數據.228
11.4.1 讀取與搜索XML文件.228
11.4.2 字典轉換為XML字符串.229
11.4.3 XML字符串轉換為字典231
11.5 處理JSON格式的數據232
11.5.1 JSON字符串與字典互相轉換233
11.5.2 將JSON字符串轉換為類實例234
11.5.3 將類實例轉換為JSON字符串236
11.5.4 類實例列表與JSON字符串互相轉換236 11.6將JSON字符串轉換為XML字符串237
11.7 CSV文件存儲.238
11.7.1 寫入CSV文件238
11.7.2 讀取CSV文件241
11.8 小結241
第12章數據庫存儲.242
12.1 SQLite數據庫.242
12.1.1管理SQLite數據庫.243
12.1.2用Python操作SQLite數據庫.245
12.2MySQL數據庫.247
12.2.1安裝MySQL.247
12.2.2在Python中使用MySQL250
12.3非關系型數據庫253
12.3.1NoSQL簡介253
12.3.2MongoDB數據庫.253
12.3.3pymongo模塊.255
12.4項目實戰:抓取豆瓣音樂排行榜256
12.5項目實戰:抓取豆瓣電影排行榜260
12.6小結264
第5篇爬蟲高級應用 第13章抓取異步數據.266
13.1異步加載與AJAX.266
13.2基本原理.267
13.3逆向工程.270
13.4提取結果.274
13.5項目實戰:支持搜索功能的圖片爬蟲.274
13.6項目實戰:抓取京東圖書評價.279
13.7小結284
第14章可見即可爬:Selenium285
14.1安裝Selenium.286
14.2安裝WebDriver286
14.2.1安裝ChromeDriver287
14.2.2裝EdgeWebDriver288
14.2.3安裝其他瀏覽器的WebDriver289
14.3Selenium的基本使用方法.289
14.4查找節點.293
14.4.1查找單個節點293
14.4.2查找多個節點295
14.5節點交互.297
14.6動作鏈298
14.7執行JavaScript代碼.301
14.8獲取節點信息302
14.9管理Cookies.303
14.10改變節點的屬性值.304
14.11項目實戰:抓取QQ空間說說的內容.306
14.12小結308
第15章基于Splash的爬蟲.309
15.1Splash基礎.309
15.1.1Splash功能簡介309
15.1.2安裝Docker310
15.1.3安裝Splash.310
15.2 SplashLua腳本312
15.2.1第一個Lua腳本312
15.2.2異步處理.313
15.2.3Splash對象屬性314
15.2.4go方法.318
15.2.5wait方法.319
15.2.6jsfunc方法320
15.2.7evaljs方法320
15.2.8runjs方法.320
15.2.9autoload方法321
15.2.10call_later方法.322
15.2.11http_get方法.323
15.2.12http_post方法.324
15.2.13set_content方法325
15.2.14html方法325
15.2.15png方法326
15.2.16jpeg方法.326
15.2.17har方法326
15.2.18其他方法.327
15.3 使用CSS選擇器.331
15.3.1select方法331
15.3.2select_all方法.332
15.4 模擬鼠標和鍵盤的動作333
15.5 SplashHTTPAPI334
15.6 項目實戰:使用SplashLua抓取京東搜索結果.338 15.7 小結340
第16章抓取移動App的數據.341
16.1 使用Charles.341
16.1.1抓取HTTP數據包.342
16.1.2安裝PC端證書.344
16.1.3在手機端安裝證書.345
16.1.4監聽HTTPS數據包.346
16.2 使用mitmproxy348
16.2.1安裝mitmproxy.348
16.2.2在PC端安裝mitmproxy證書349
16.2.3在移動端安裝mitmproxy證書.352
16.2.4 mitmproxy有哪些功能353
16.2.5 設置手機的代理353
16.2.6 用mitmproxy監聽App的請求與響應數據.354 16.2.7 使用mitmproxy編輯請求信息.356
16.2.8 mitmdump與Python對接.357
16.2.9 使用mitmweb監聽請求與響應361
16.3 項目實戰:實時抓取“得到”App在線課程363 16.4 小結367
第17章使用Appium在移動端抓取數據.368 17.1 安裝Appium.368
17.1.1 安裝Appium桌面端368
17.1.2 配置Android開發環境370
17.1.3 配置iOS開發環境371
17.2 Appium的基本使用方法.372
17.2.1 啟動Appium服務.372
17.2.2 查找AndroidApp的Package和入口Activity.374 17.2.3 控制App.376
17.3 使用Python控制手機App379
17.4 AppiumPythonClientAPI.380
17.4.1 初始化(Remote類)380
17.4.2 查找元素.381
17.4.3 單擊元素.381
17.4.4 屏幕拖動.382
17.4.5 屏幕滑動.382
17.4.6 拖曳操作.383
17.4.7 文本輸入.383
17.4.8 動作鏈383
17.5 項目實戰:利用Appium抓取微信朋友圈信息384 17.6 小結388
第18章多線程和多進程爬蟲389
18.1 線程與進程.389
18.1.1 進程389
18.1.2 線程390
18.2 Python與線程.390
18.2.1 使用單線程執行程序.390
18.2.2 使用多線程執行程序.391
18.2.3 為線程函數傳遞參數.393
18.2.4 線程和鎖.394
18.3 高級線程模塊(threading).395
18.3.1 Thread類與線程函數.395
18.3.2 Thread類與線程對象.396
18.3.3 從Thread類繼承.398
18.4 線程同步.399
18.4.1 線程鎖400
18.4.2 信號量402
18.5 生產者—消費者問題與queue模塊405
18.6 多進程407
18.7 項目實戰:抓取豆瓣音樂Top250排行榜(多線程版)408 18.8 項目實戰:抓取豆瓣音樂Top250排行榜(多進程版)411 18.9 小結412
第19章網絡爬蟲框架:Scrapy413
19.1 Scrapy基礎知識.413
19.1.1 Scrapy簡介.413
19.1.2 Scrapy安裝.414
19.1.3 ScrapyShell抓取Web資源.415
19.2 用Scrapy編寫網絡爬蟲417
19.2.1 創建和使用Scrapy工程417
19.2.2 在PyCharm中使用Scrapy419
19.2.3 在PyCharm中使用擴展工具運行Scrapy程序.421 19.2.4 使用Scrapy抓取數據,并通過XPath指定解析規則423 19.2.5 將抓取到的數據保存為多種格式的文件424 19.2.6 使用ItemLoader保存單條抓取的數據426 19.2.7 使用ItemLoader保存多條抓取的數據428 19.2.8抓取多個URL.430
19.3Scrapy的高級應用431
19.3.1處理登錄頁面431
19.3.2處理帶隱藏文本框的登錄頁面.434
19.3.3通過API抓取天氣預報數據436
19.3.4從CSV格式轉換到JSON格式443
19.3.5下載器中間件447
19.3.6爬蟲中間件.452
19.3.7Item管道455
19.3.8通用爬蟲.465
19.4小結474
第20章綜合爬蟲項目:可視化爬蟲475
20.1項目簡介.475
20.2主界面設計和實現.477
20.3獲取商品頁數和每頁商品數.478
20.4并發抓取商品列表.479
20.5數據庫操作類481
20.6情感分析.484
20.7抓取和分析商品評論數據485
20.8可視化評論數據486
20.9小結488
|
序: |