內容簡介

本書講解了如何使用Python來編寫網路爬蟲程式,內容包括網路爬蟲簡介,從頁面中抓取資料的3種方法,提取緩存中的資料,使用多個執行緒和進程進行併發抓取,抓取動態頁面中的內容,與表單進行交互,處理頁面中的驗證碼問題,以及使用Scarpy和Portia進行資料抓取,並在最後介紹了使用本書講解的數據抓取技術對幾個真實的網站進行抓取的實例,旨在説明讀者活學活用書中介紹的技術。

本書適合有一定Python程式設計經驗而且對爬蟲技術感興趣的讀者閱讀。





 

作者介紹

Katharine Jarmul是德國柏林的一位數據科學家和Python支持者。她經營了一家數據科學咨詢公司——Kjamistan,為不同規模的企業提供諸如數據抽 取、採集以及建模的服務。她從2008年開始使用Python進行編程,從2010年開始使用Python抓取網站,並且在使用網路爬蟲進行數據分析和機 器學習的不同規模的初創企業中工作過。讀者可以通過Twitter(@kjam)關注她的想法以及動態。

Richard Lawson來自澳大利亞,畢業於墨爾本大學電腦科學專業。畢業后,他創辦了一家專註于網路爬蟲的公司,為超過50個國家的業務提供遠程工作。他精通世界 語,可以使用漢語和韓語對話,並且積極投身於開源軟體事業。他目前正在牛津大學攻讀研究生學位,並利用業餘時間研發自主無人機。

李斌,畢業於北京科技大學電腦科學與技術專業,獲得碩士學位。曾任職于阿里巴巴,當前供職于凡普金科,負責應用安全工作。熱愛Python編程和Web安全,希望以更加智能和自動化的方式提升網路安全。博客地址為pythoner.com。
 

目錄

第 1章 網路爬蟲簡介 1
1.1 網路爬蟲何時有用 1
1.2 網路爬蟲是否合法 2
1.3 Python 3 3
1.4 背景調研 4
1.4.1 檢查robots.txt 4
1.4.2 檢查網站地圖 5
1.4.3 估算網站大小 6
1.4.4 識別網站所用技術 7
1.4.5 尋找網站所有者 9
1.5 編寫第 一個網路爬蟲 11
1.5.1 抓取與爬取的對比 11
1.5.2 下載網頁 12
1.5.3 網站地圖爬蟲 15
1.5.4 ID遍歷爬蟲 17
1.5.5 連結爬蟲 19
1.5.6 使用requests庫 28
1.6 本章小結 30
第 2章 數據抓取 31
2.1 分析網頁 32
2.2 3種網頁抓取方法 34
2.2.1 規則運算式 35
2.2.2 Beautiful Soup 37
2.2.3 Lxml 39
2.3 CSS選擇器和流覽器控制台 41
2.4 XPath選擇器 43
2.5 LXML和家族樹 46
2.6 性能對比 47
2.7 抓取結果 49
2.7.1 抓取總結 50
2.7.2 為連結爬蟲添加抓取回檔 51
2.8 本章小結 55
第3章 下載緩存 56
3.1 何時使用緩存 57
3.2 為連結爬蟲添加緩存支援 57
3.3 磁片緩存 60
3.3.1 實現磁片緩存 62
3.3.2 緩存測試 64
3.3.3 節省磁碟空間 65
3.3.4 清理過期資料 66
3.3.5 磁片緩存缺點 68
3.4 鍵值對存儲緩存 69
3.4.1 鍵值對存儲是什麼 69
3.4.2 安裝Redis 70
3.4.3 Redis概述 71
3.4.4 Redis緩存實現 72
3.4.5 壓縮 74
3.4.6 測試緩存 75
3.4.7 探索requests-cache 76
3.5 本章小結 78
第4章 併發下載 79
4.1 100萬個網頁 79
4.2 串列爬蟲 82
4.3 多執行緒爬蟲 83
4.4 執行緒和進程如何工作 83
4.4.1 實現多執行緒爬蟲 84
4.4.2 多進程爬蟲 87
4.5 性能 91
4.6 本章小結 94
第5章 動態內容 95
5.1 動態網頁示例 95
5.2 對動態網頁進行逆向工程 98
5.3 渲染動態網頁 104
5.3.1 PyQt還是PySide 105
5.3.2 執行JavaScript 106
5.3.3 使用WebKit與網站交互 108
5.4 渲染類 111
5.5 本章小結 117
第6章 表單交互 119
6.1 登錄表單 120
6.2 支援內容更新的登入指令檔擴展 128
6.3 使用Selenium實現自動化表單處理 132
6.4 本章小結 135
第7章 驗證碼處理 136
7.1 註冊帳號 137
7.2 光學字元辨識 140
7.3 處理複雜驗證碼 144
7.4 使用驗證碼處理服務 144
7.4.1 9kw入門 145
7.4.2 報告錯誤 150
7.4.3 與註冊功能集成 151
7.5 驗證碼與機器學習 153
7.6 本章小結 153
第8章 Scrapy 154
8.1 安裝Scrapy 154
8.2 啟動專案 155
8.2.1 定義模型 156
8.2.2 創建爬蟲 157
8.3 不同的爬蟲類型 162
8.4 使用shell命令抓取 163
8.4.1 檢查結果 165
8.4.2 中斷與恢復爬蟲 167
8.5 使用Portia編寫視覺化爬蟲 170
8.5.1 安裝 170
8.5.2 標注 172
8.5.3 運行爬蟲 176
8.5.4 檢查結果 176
8.6 使用Scrapely實現自動化抓取 177
8.7 本章小結 178
第9章 綜合應用 179
9.1 Google搜尋引擎 179
9.2 Facebook 184
9.2.1 網站 184
9.2.2 Facebook API 186
9.3 Gap 188
9.4 寶馬 192
9.5 本章小結 196
網路書店 類別 折扣 價格
  1. 新書
    79
    $232