用Python寫網(wǎng)絡(luò)爬蟲 第2版
定 價(jià):49 元
叢書名:數(shù)據(jù)科學(xué)
- 作者:[德]凱瑟琳 雅姆爾(Katharine Jarmul)、[澳]理查德 勞森(Richard Lawson)
- 出版時(shí)間:2018/8/1
- ISBN:9787115479679
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.561
- 頁(yè)碼:196
- 紙張:
- 版次:01
- 開本:16開
《用Python寫網(wǎng)絡(luò)爬蟲(第 2版》講解了如何使用Python來(lái)編寫網(wǎng)絡(luò)爬蟲程序,內(nèi)容包括網(wǎng)絡(luò)爬蟲簡(jiǎn)介,從頁(yè)面中抓取數(shù)據(jù)的3種方法,提取緩存中的數(shù)據(jù),使用多個(gè)線程和進(jìn)程進(jìn)行并發(fā)抓取,抓取動(dòng)態(tài)頁(yè)面中的內(nèi)容,與表單進(jìn)行交互,處理頁(yè)面中的驗(yàn)證碼問(wèn)題,以及使用Scarpy和Portia進(jìn)行數(shù)據(jù)抓取,并在最后介紹了使用本書講解的數(shù)據(jù)抓取技術(shù)對(duì)幾個(gè)真實(shí)的網(wǎng)站進(jìn)行抓取的實(shí)例,旨在幫助讀者活學(xué)活用書中介紹的技術(shù)。
《用Python寫網(wǎng)絡(luò)爬蟲(第 2版》適合有一定Python編程經(jīng)驗(yàn)而且對(duì)爬蟲技術(shù)感興趣的讀者閱讀。
暢銷的Python網(wǎng)絡(luò)爬蟲開發(fā)實(shí)戰(zhàn)圖書全新升級(jí)版,上一版年銷量近40000冊(cè)。
針對(duì)Python 3.6版本編寫。
提供示例完整源碼和實(shí)例網(wǎng)站搭建源碼,確保用戶能在本地成功復(fù)現(xiàn)爬取網(wǎng)站環(huán)境,并保障網(wǎng)站的穩(wěn)定性與可靠性以及代碼運(yùn)行結(jié)果的可再現(xiàn)性。
Internet上包含了許多有用的數(shù)據(jù),其中大部分是可以免費(fèi)公開訪問(wèn)的。但是,這些數(shù)據(jù)不容易使用,它們內(nèi)嵌在網(wǎng)站的架構(gòu)和樣式中,在提取時(shí)也需要多加小心。網(wǎng)絡(luò)爬取技術(shù)作為一種收集和理解網(wǎng)絡(luò)上海量信息的方式,正變得越來(lái)越有用。
本書是使用Python 3.6的新特性來(lái)爬取網(wǎng)絡(luò)數(shù)據(jù)的入門指南。本書講解了從靜態(tài)網(wǎng)站提取數(shù)據(jù)的方法,以及如何使用數(shù)據(jù)庫(kù)和文件緩存技術(shù)來(lái)節(jié)省時(shí)間并管理服務(wù)器負(fù)載,然后介紹了如何使用瀏覽器、爬蟲和并發(fā)爬蟲開發(fā)一個(gè)更為復(fù)雜的爬蟲。
借助于PyQt和Selenium,你可以決定何時(shí)以及如何從依賴JavaScript的網(wǎng)站上爬取數(shù)據(jù),以及更好地理解在受CAPTCHA保護(hù)的復(fù)雜網(wǎng)站上提交表單的方法。本書還講解了使用Python包(比如mechanize)進(jìn)行自動(dòng)化處理的方法、使用Scrapy庫(kù)創(chuàng)建基于類的爬蟲的方法,以及如何在真實(shí)的網(wǎng)站上實(shí)施所學(xué)的爬蟲技巧。
本書最后還涵蓋了使用爬蟲對(duì)網(wǎng)站進(jìn)行測(cè)試、遠(yuǎn)程爬取技術(shù)、圖像處理以及其他相關(guān)的主題。
本書主要內(nèi)容如下:
使用簡(jiǎn)單的Python程序從頁(yè)面中提取數(shù)據(jù);
構(gòu)建并發(fā)爬蟲,對(duì)頁(yè)面進(jìn)行并行處理;
通過(guò)跟蹤鏈接來(lái)爬取一個(gè)網(wǎng)站;
從HTML中提取特性;
緩存下載的HTML,以供復(fù)用;
比較并發(fā)模型,確定比較快的爬蟲;
解析依賴于JavaScript的網(wǎng)站;
與表單和會(huì)話進(jìn)行交互。
Katharine Jarmul是德國(guó)柏林的一位數(shù)據(jù)科學(xué)家和Python支持者。她經(jīng)營(yíng)了一家數(shù)據(jù)科學(xué)咨詢公司——Kjamistan,為不同規(guī)模的企業(yè)提供諸如數(shù)據(jù)抽取、采集以及建模的服務(wù)。她從2008年開始使用Python進(jìn)行編程,從2010年開始使用Python抓取網(wǎng)站,并且在使用網(wǎng)絡(luò)爬蟲進(jìn)行數(shù)據(jù)分析和機(jī)器學(xué)習(xí)的不同規(guī)模的初創(chuàng)企業(yè)中工作過(guò)。讀者可以通過(guò)Twitter(@kjam)關(guān)注她的想法以及動(dòng)態(tài)。
Richard Lawson來(lái)自澳大利亞,畢業(yè)于墨爾本大學(xué)計(jì)算機(jī)科學(xué)專業(yè)。畢業(yè)后,他創(chuàng)辦了一家專注于網(wǎng)絡(luò)爬蟲的公司,為超過(guò)50個(gè)國(guó)家的業(yè)務(wù)提供遠(yuǎn)程工作。他精通世界語(yǔ),可以使用漢語(yǔ)和韓語(yǔ)對(duì)話,并且積極投身于開源軟件事業(yè)。他目前正在牛津大學(xué)攻讀研究生學(xué)位,并利用業(yè)余時(shí)間研發(fā)自主無(wú)人機(jī)。
譯者介紹
李斌,畢業(yè)于北京科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè),獲得碩士學(xué)位。曾任職于阿里巴巴,當(dāng)前供職于凡普金科,負(fù)責(zé)應(yīng)用安全工作。熱愛Python編程和Web安全,希望以更加智能和自動(dòng)化的方式提升網(wǎng)絡(luò)安全。博客地址為pythoner.com。
第 1章 網(wǎng)絡(luò)爬蟲簡(jiǎn)介 1
1.1 網(wǎng)絡(luò)爬蟲何時(shí)有用 1
1.2 網(wǎng)絡(luò)爬蟲是否合法 2
1.3 Python 3 3
1.4 背景調(diào)研 4
1.4.1 檢查robots.txt 4
1.4.2 檢查網(wǎng)站地圖 5
1.4.3 估算網(wǎng)站大小 6
1.4.4 識(shí)別網(wǎng)站所用技術(shù) 7
1.4.5 尋找網(wǎng)站所有者 9
1.5 編寫第 一個(gè)網(wǎng)絡(luò)爬蟲 11
1.5.1 抓取與爬取的對(duì)比 11
1.5.2 下載網(wǎng)頁(yè) 12
1.5.3 網(wǎng)站地圖爬蟲 15
1.5.4 ID遍歷爬蟲 17
1.5.5 鏈接爬蟲 19
1.5.6 使用requests庫(kù) 28
1.6 本章小結(jié) 30
第 2章 數(shù)據(jù)抓取 31
2.1 分析網(wǎng)頁(yè) 32
2.2 3種網(wǎng)頁(yè)抓取方法 34
2.2.1 正則表達(dá)式 35
2.2.2 Beautiful Soup 37
2.2.3 Lxml 39
2.3 CSS選擇器和瀏覽器控制臺(tái) 41
2.4 XPath選擇器 43
2.5 LXML和家族樹 46
2.6 性能對(duì)比 47
2.7 抓取結(jié)果 49
2.7.1 抓取總結(jié) 50
2.7.2 為鏈接爬蟲添加抓取回調(diào) 51
2.8 本章小結(jié) 55
第3章 下載緩存 56
3.1 何時(shí)使用緩存 57
3.2 為鏈接爬蟲添加緩存支持 57
3.3 磁盤緩存 60
3.3.1 實(shí)現(xiàn)磁盤緩存 62
3.3.2 緩存測(cè)試 64
3.3.3 節(jié)省磁盤空間 65
3.3.4 清理過(guò)期數(shù)據(jù) 66
3.3.5 磁盤緩存缺點(diǎn) 68
3.4 鍵值對(duì)存儲(chǔ)緩存 69
3.4.1 鍵值對(duì)存儲(chǔ)是什么 69
3.4.2 安裝Redis 70
3.4.3 Redis概述 71
3.4.4 Redis緩存實(shí)現(xiàn) 72
3.4.5 壓縮 74
3.4.6 測(cè)試緩存 75
3.4.7 探索requests-cache 76
3.5 本章小結(jié) 78
第4章 并發(fā)下載 79
4.1 100萬(wàn)個(gè)網(wǎng)頁(yè) 79
4.2 串行爬蟲 82
4.3 多線程爬蟲 83
4.4 線程和進(jìn)程如何工作 83
4.4.1 實(shí)現(xiàn)多線程爬蟲 84
4.4.2 多進(jìn)程爬蟲 87
4.5 性能 91
4.6 本章小結(jié) 94
第5章 動(dòng)態(tài)內(nèi)容 95
5.1 動(dòng)態(tài)網(wǎng)頁(yè)示例 95
5.2 對(duì)動(dòng)態(tài)網(wǎng)頁(yè)進(jìn)行逆向工程 98
5.3 渲染動(dòng)態(tài)網(wǎng)頁(yè) 104
5.3.1 PyQt還是PySide 105
5.3.2 執(zhí)行JavaScript 106
5.3.3 使用WebKit與網(wǎng)站交互 108
5.4 渲染類 111
5.5 本章小結(jié) 117
第6章 表單交互 119
6.1 登錄表單 120
6.2 支持內(nèi)容更新的登錄腳本擴(kuò)展 128
6.3 使用Selenium實(shí)現(xiàn)自動(dòng)化表單處理 132
6.4 本章小結(jié) 135
第7章 驗(yàn)證碼處理 136
7.1 注冊(cè)賬號(hào) 137
7.2 光學(xué)字符識(shí)別 140
7.3 處理復(fù)雜驗(yàn)證碼 144
7.4 使用驗(yàn)證碼處理服務(wù) 144
7.4.1 9kw入門 145
7.4.2 報(bào)告錯(cuò)誤 150
7.4.3 與注冊(cè)功能集成 151
7.5 驗(yàn)證碼與機(jī)器學(xué)習(xí) 153
7.6 本章小結(jié) 153
第8章 Scrapy 154
8.1 安裝Scrapy 154
8.2 啟動(dòng)項(xiàng)目 155
8.2.1 定義模型 156
8.2.2 創(chuàng)建爬蟲 157
8.3 不同的爬蟲類型 162
8.4 使用shell命令抓取 163
8.4.1 檢查結(jié)果 165
8.4.2 中斷與恢復(fù)爬蟲 167
8.5 使用Portia編寫可視化爬蟲 170
8.5.1 安裝 170
8.5.2 標(biāo)注 172
8.5.3 運(yùn)行爬蟲 176
8.5.4 檢查結(jié)果 176
8.6 使用Scrapely實(shí)現(xiàn)自動(dòng)化抓取 177
8.7 本章小結(jié) 178
第9章 綜合應(yīng)用 179
9.1 Google搜索引擎 179
9.2 Facebook 184
9.2.1 網(wǎng)站 184
9.2.2 Facebook API 186
9.3 Gap 188
9.4 寶馬 192
9.5 本章小結(jié) 196