用 Python 寫網絡爬蟲, 2/e (Python Web Scraping, 2/e)

凱瑟琳 雅姆爾(Katharine Jarmul) 理乍得 勞森(Richard Lawson)

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

商品描述

《用Python寫網絡爬蟲(第 2版》講解瞭如何使用Python來編寫網絡爬蟲程序,內容包括網絡爬蟲簡介,從頁面中抓取數據的3種方法,提取緩存中的數據,使用多個線程和進程進行並發抓取,抓取動態頁面中的內容,與表單進行交互,處理頁面中的驗證碼問題,以及使用Scarpy和Portia進行數據抓取,並在最後介紹了使用本書講解的數據抓取技術對幾個真實的網站進行抓取的實例,旨在幫助讀者活學活用書中介紹的技術。
《用Python寫網絡爬蟲(第 2版》適合有一定Python編程經驗而且對爬蟲技術感興趣的讀者閱讀。

作者簡介

Katharine Jarmul是德國柏林的一位數據科學家和Python支持者。
她經營了一家數據科學諮詢公司――Kjamistan,
為不同規模的企業提供諸如數據抽取、採集以及建模的服務。
她從2008年開始使用Python進行編程,從2010年開始使用Python抓取網站,
並且在使用網絡爬蟲進行數據分析和機器學習的不同規模的初創企業中工作過。
讀者可以通過Twitter(@kjam)關注她的想法以及動態。 
Richard Lawson來自澳大利亞,畢業于墨爾本大學計算機科學專業。
畢業後,他創辦了一家專注於網絡爬蟲的公司,為超過50個國家的業務提供遠程工作。
他精通世界語,可以使用漢語和韓語對話,並且積極投身於開源軟件事業。
他目前正在牛津大學攻讀研究生學位,並利用業餘時間研發自主無人機。 

譯者介紹 
李斌,畢業于北京科技大學計算機科學與技術專業,獲得碩士學位。
曾任職于阿裡巴巴,當前供職于凡普金科,負責應用安全工作。
熱愛Python編程和Web安全,希望以更加智能和自動化的方式提升網絡安全。

目錄大綱

第 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