隨著人工智能浪潮的到來(lái),筆者身邊有越來(lái)越多的人投入到人工智能和大數(shù)據(jù)的學(xué)習(xí)與研究中。他們來(lái)自不同的行業(yè),有高校老師和學(xué)生,有AI研究專家,有物理或數(shù)學(xué)專業(yè)人才。他們都迫切希望能夠獲取大量相關(guān)領(lǐng)域的數(shù)據(jù),用于學(xué)習(xí)和研究。而互聯(lián)網(wǎng)中源源不斷的海量數(shù)據(jù)為他們提供了一個(gè)既經(jīng)濟(jì)又可靠的來(lái)源。如何簡(jiǎn)單、高效、快捷地獲取這些數(shù)據(jù)呢?筆者試圖為他們推薦幾本能快速入手的書(shū)籍。經(jīng)過(guò)一番了解,發(fā)現(xiàn)目前市場(chǎng)上關(guān)于網(wǎng)絡(luò)爬蟲(chóng)的圖書(shū)主要分為兩類(lèi):一類(lèi)是翻譯成中文的外版圖書(shū),其定位相對(duì)高端,且翻譯質(zhì)量參差不齊,閱讀難度較大,不易上手,故不適合初學(xué)者學(xué)習(xí);另一類(lèi)是國(guó)內(nèi)原創(chuàng)的一些關(guān)于網(wǎng)絡(luò)爬蟲(chóng)的圖書(shū),這些書(shū)大多要求讀者具備一定的Python編程基礎(chǔ),雖然書(shū)中對(duì)各種網(wǎng)絡(luò)爬蟲(chóng)框架都有介紹,但是不深入也不成體系,對(duì)于零基礎(chǔ)或非計(jì)算機(jī)專業(yè)的人員來(lái)說(shuō),顯然也不太適合。
于是,他們就慫恿我,希望我能編寫(xiě)一本從零基礎(chǔ)開(kāi)始學(xué)起的網(wǎng)絡(luò)爬蟲(chóng)書(shū)籍。雖然我從事網(wǎng)絡(luò)爬蟲(chóng)教學(xué)工作多年,但我深知教學(xué)跟寫(xiě)書(shū)是兩碼事。教學(xué)注重臨場(chǎng)發(fā)揮,思維比較發(fā)散;而寫(xiě)書(shū)要求文筆流暢、邏輯嚴(yán)謹(jǐn)縝密。我實(shí)在沒(méi)有信心接受這個(gè)挑戰(zhàn)。直到有一天,機(jī)械工業(yè)出版社的編輯聯(lián)系到了我,認(rèn)為我從事教育和研究工作,能講、會(huì)說(shuō)、有技術(shù),對(duì)寫(xiě)書(shū)來(lái)說(shuō)正是最大的優(yōu)勢(shì)。于是在編輯的鼓勵(lì)和指導(dǎo)下,我開(kāi)始構(gòu)思和梳理文章脈絡(luò):首先,《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》受眾要廣,即使是零基礎(chǔ)或非計(jì)算機(jī)專業(yè)的小白也能上手;其次,《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》內(nèi)容不追求多和雜,只選用最流行、最好用、最強(qiáng)大的網(wǎng)絡(luò)爬蟲(chóng)框架介紹即可;最后,《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》的可操作性和實(shí)用性要強(qiáng),通過(guò)迭代案例加深讀者對(duì)知識(shí)的理解與應(yīng)用,以典型的、知名的網(wǎng)站為爬取目標(biāo),提高讀者解決實(shí)際問(wèn)題的能力!稄牧汩_(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》正是遵循這樣的思路逐步推進(jìn),不斷優(yōu)化,最后順利地完成了寫(xiě)作。
《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》有何特色
1.由淺入深,循序漸進(jìn)
《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》從零開(kāi)始,先介紹Python語(yǔ)言、網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ)、Scrapy框架結(jié)構(gòu)等基礎(chǔ)內(nèi)容;再介紹Scrapy的數(shù)據(jù)庫(kù)存儲(chǔ)、動(dòng)態(tài)頁(yè)面爬取、突破反爬蟲(chóng)技術(shù)等核心技術(shù);接著介紹分布式爬蟲(chóng)的實(shí)現(xiàn)、部署和管理等高級(jí)技術(shù);最后介紹了一個(gè)完整的綜合項(xiàng)目的開(kāi)發(fā)過(guò)程。
2.視頻教學(xué),講解詳盡
為了便于讀者高效、直觀地學(xué)習(xí),書(shū)中每一章的重點(diǎn)內(nèi)容都專門(mén)錄制了配套教學(xué)視頻。讀者可以將圖書(shū)內(nèi)容和教學(xué)視頻結(jié)合起來(lái),深入、系統(tǒng)地學(xué)習(xí),相信一定會(huì)取得更好的學(xué)習(xí)效果。
3.注釋詳細(xì),一目了然
無(wú)論是在Python程序設(shè)計(jì),還是在Scrapy爬蟲(chóng)實(shí)現(xiàn)部分,《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》均對(duì)代碼做了詳細(xì)的注釋,讀者理解起來(lái)會(huì)更加順暢。另外,對(duì)于多步驟的操作過(guò)程,《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》在圖例中使用數(shù)字做了標(biāo)注,便于讀者準(zhǔn)確操作。
4.案例豐富,實(shí)用易學(xué)
《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》提供了14個(gè)實(shí)用性很強(qiáng)的項(xiàng)目案例,這些案例爬取的目標(biāo)均是知名的、具有代表性的、應(yīng)用價(jià)值較高的網(wǎng)站。讀者通過(guò)實(shí)際操練這些項(xiàng)目案例,可以更加透徹地理解Scrapy網(wǎng)絡(luò)爬蟲(chóng)的相關(guān)知識(shí)。
5.提供課件,方便教學(xué)
筆者專門(mén)為《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》制作了專業(yè)的教學(xué)PPT,以方便相關(guān)院;蚺嘤(xùn)機(jī)構(gòu)的教學(xué)人員講課時(shí)使用。
《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》內(nèi)容
第1篇 基礎(chǔ)篇
第1章 Python基礎(chǔ)
本章介紹了Python環(huán)境搭建,并詳細(xì)介紹了Python基本語(yǔ)法、Python內(nèi)置數(shù)據(jù)結(jié)構(gòu)及Python模塊化設(shè)計(jì),為Scrapy網(wǎng)絡(luò)爬蟲(chóng)開(kāi)發(fā)打下堅(jiān)實(shí)的編程基礎(chǔ)。
第2章 網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ)
本章介紹了與網(wǎng)絡(luò)爬蟲(chóng)技術(shù)相關(guān)的HTTP基本原理、網(wǎng)頁(yè)基礎(chǔ),以及使用XPath提取網(wǎng)頁(yè)信息的方法,為Scrapy網(wǎng)絡(luò)爬蟲(chóng)開(kāi)發(fā)打下堅(jiān)實(shí)的理論基礎(chǔ)。
第3章 Scrapy框架介紹
本章首先介紹了網(wǎng)絡(luò)爬蟲(chóng)的原理;然后介紹了Scrapy框架的結(jié)構(gòu)及執(zhí)行流程,并實(shí)現(xiàn)了Scrapy的安裝;最后結(jié)合案例,實(shí)現(xiàn)了第一個(gè)Scrapy網(wǎng)絡(luò)爬蟲(chóng)功能。
第4章 Scrapy網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ)
本章深入Scrapy框架內(nèi)部,介紹了使用Spider提取數(shù)據(jù)、使用Item封裝數(shù)據(jù)、使用Pipeline處理數(shù)據(jù)的方法,并通過(guò)一個(gè)項(xiàng)目案例,演示了一個(gè)功能完備的Scrapy項(xiàng)目的實(shí)現(xiàn)過(guò)程。
第2篇 進(jìn)階篇
第5章 數(shù)據(jù)庫(kù)存儲(chǔ)
本章介紹了關(guān)系型數(shù)據(jù)庫(kù)MySQL、非關(guān)系型數(shù)據(jù)庫(kù)MongoDB和Redis的下載、安裝及基本操作,并通過(guò)3個(gè)項(xiàng)目案例,實(shí)現(xiàn)了將爬取來(lái)的數(shù)據(jù)分別存儲(chǔ)于這3個(gè)數(shù)據(jù)庫(kù)中的方法。
第6章 JavaScript與AJAX數(shù)據(jù)爬取
本章通過(guò)兩個(gè)項(xiàng)目案例,介紹了使用Scrapy爬取通過(guò)JavaScript或AJAX加載的數(shù)據(jù)的方法和技巧。
第7章 動(dòng)態(tài)渲染頁(yè)面的爬取
本章介紹了使用Selenium和Splash這兩個(gè)工具來(lái)模擬瀏覽器進(jìn)行數(shù)據(jù)爬取的方法,并通過(guò)兩個(gè)項(xiàng)目案例,進(jìn)一步鞏固使用Selenium和Splash的方法與技巧。
第8章 模擬登錄
本章介紹了某些需要登錄才能訪問(wèn)的頁(yè)面爬取方法,并介紹了模擬登錄、驗(yàn)證碼識(shí)別和Cookie自動(dòng)登錄等知識(shí),還通過(guò)一個(gè)項(xiàng)目案例,進(jìn)一步鞏固了實(shí)現(xiàn)模擬登錄的方法和技巧。
第9章 突破反爬蟲(chóng)技術(shù)
本章介紹了突破反爬蟲(chóng)的幾種技術(shù),主要有降低請(qǐng)求頻率、修改請(qǐng)求頭、禁用Cookie、偽裝成隨機(jī)瀏覽器及更換IP地址等,通過(guò)這些舉措,可以有效避免目標(biāo)網(wǎng)站的偵測(cè),提高爬蟲(chóng)成功率。
第10章 文件和圖片下載
本章介紹了使用Scrapy的中間件批量下載文件和圖片的方法,并通過(guò)兩個(gè)項(xiàng)目案例,進(jìn)一步鞏固了文件和圖片下載的方法與技巧。
第3篇 高級(jí)篇
第11章 Scrapy-Redis實(shí)現(xiàn)分布式爬蟲(chóng)
本章介紹了使用Scrapy-Redis實(shí)現(xiàn)分布式爬蟲(chóng)的方法。首先介紹了分布式爬蟲(chóng)的原理,然后介紹了實(shí)現(xiàn)分布式爬蟲(chóng)的思路和核心代碼,最后通過(guò)一個(gè)圖片下載的項(xiàng)目案例,構(gòu)造了一個(gè)分布式爬蟲(chóng)系統(tǒng)。
第12章 Scrapyd部署分布式爬蟲(chóng)
本章介紹了分布式系統(tǒng)的部署和管理。首先介紹了使用Scrapyd和Scrapyd-Client部署分布式爬蟲(chóng),然后介紹了使用Docker批量部署分布式爬蟲(chóng),最后介紹了如何使用Gerapy管理分布式爬蟲(chóng)。
第13章 綜合項(xiàng)目:搶票軟件的實(shí)現(xiàn)
本章通過(guò)全面分析12306購(gòu)票網(wǎng)站的特點(diǎn),結(jié)合Scrapy網(wǎng)絡(luò)爬蟲(chóng)框架和Selenium瀏覽器工具,使用Python面向?qū)ο蟮脑O(shè)計(jì)模式,完成了一個(gè)綜合性和實(shí)用性都較強(qiáng)的項(xiàng)目:搶票軟件。
《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》配套資源獲取方式
《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》涉及以下配套資源:
? 配套教學(xué)視頻;
? 實(shí)例源代碼文件;
? 教學(xué)PPT。
這些配套資源需要讀者自行下載。請(qǐng)登錄華章公司網(wǎng)站www.hzbook.com,在該網(wǎng)站上搜索到《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》,然后單擊資料下載按鈕,在《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》頁(yè)面上找到下載鏈接即可下載。
適合閱讀《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》的讀者
? 網(wǎng)絡(luò)爬蟲(chóng)初學(xué)者;
? 網(wǎng)絡(luò)爬蟲(chóng)愛(ài)好者;
? 網(wǎng)絡(luò)爬蟲(chóng)從業(yè)人員;
? 數(shù)據(jù)工程師;
? 高等院校的老師和學(xué)生;
? 相關(guān)培訓(xùn)機(jī)構(gòu)的學(xué)員。
《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》作者
筆者畢業(yè)于中國(guó)科學(xué)技術(shù)大學(xué)軟件工程專業(yè),獲碩士學(xué)位,F(xiàn)就職于知名的智能語(yǔ)音技術(shù)公司,有10余年軟件項(xiàng)目管理經(jīng)驗(yàn)。在高等院校擔(dān)任網(wǎng)絡(luò)爬蟲(chóng)及機(jī)器學(xué)習(xí)方面的授課工作。
《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》能夠順利出版,首先要感謝《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》編輯歐振旭!他花費(fèi)了大量時(shí)間和精力對(duì)《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》提出了有價(jià)值的修改意見(jiàn)和建議;還要感謝其他為《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》的出版提供過(guò)幫助的編輯和朋友!沒(méi)有他們的大力支持,《從零開(kāi)始學(xué)Scrapy網(wǎng)絡(luò)爬蟲(chóng)》也很難與讀者見(jiàn)面。
由于筆者水平所限,加之成書(shū)時(shí)間有限,書(shū)中可能還存在一些疏漏和不當(dāng)之處,敬請(qǐng)各位讀者斧正。
張濤
第1篇 基礎(chǔ)篇
第1章 Python基礎(chǔ) 2
1.1 Python簡(jiǎn)介 2
1.1.1 Python簡(jiǎn)史 2
1.1.2 搭建Python環(huán)境 3
1.1.3 安裝PyCharm集成開(kāi)發(fā)環(huán)境 6
1.2 Python基本語(yǔ)法 7
1.2.1 基本數(shù)據(jù)類(lèi)型和運(yùn)算 7
1.2.2 運(yùn)算符和表達(dá)式 8
1.2.3 條件判斷語(yǔ)句 9
1.2.4 循環(huán)語(yǔ)句 10
1.2.5 字符串 12
1.3 Python內(nèi)置數(shù)據(jù)結(jié)構(gòu) 14
1.3.1 列表 15
1.3.2 字典 16
1.3.3 元組 17
1.3.4 遍歷對(duì)象集合 17
1.4 Python模塊化設(shè)計(jì) 18
1.4.1 函數(shù) 18
1.4.2 迭代器(iterator) 20
1.4.3 生成器(Generator) 20
1.4.4 類(lèi)和對(duì)象 22
1.4.5 文件與異常 23
1.5 本章小結(jié) 25
第2章 網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ) 26
2.1 HTTP基本原理 26
2.1.1 URL介紹 27
2.1.2 HTTP和HTTPS協(xié)議 27
2.1.3 HTTP請(qǐng)求(Request) 27
2.1.4 HTTP響應(yīng)(Response) 30
2.2 網(wǎng)頁(yè)基礎(chǔ) 32
2.2.1 HTML文檔 33
2.2.2 網(wǎng)頁(yè)的結(jié)構(gòu) 33
2.2.3 節(jié)點(diǎn)樹(shù)及節(jié)點(diǎn)之間的關(guān)系 34
2.3 使用XPath提取網(wǎng)頁(yè)信息 36
2.3.1 XPath介紹 36
2.3.2 XPath常用路徑表達(dá)式 36
2.3.3 XPath帶謂語(yǔ)的路徑表達(dá)式 39
2.4 本章小結(jié) 40
第3章 Scrapy框架介紹 41
3.1 網(wǎng)絡(luò)爬蟲(chóng)原理 41
3.1.1 爬蟲(chóng)執(zhí)行的流程 41
3.2 Scrapy框架結(jié)構(gòu)及執(zhí)行流程 42
3.2.1 Scrapy框架結(jié)構(gòu) 42
3.2.2 Scrapy執(zhí)行流程 44
3.3 Scrapy安裝 44
3.3.1 使用pip安裝Scrapy 44
3.3.2 常見(jiàn)安裝錯(cuò)誤 45
3.3.3 驗(yàn)證安裝 46
3.4 第一個(gè)網(wǎng)絡(luò)爬蟲(chóng) 46
3.4.1 需求分析 46
3.4.2 創(chuàng)建項(xiàng)目 47
3.4.3 分析頁(yè)面 48
3.4.4 實(shí)現(xiàn)Spider爬蟲(chóng)功能 49
3.4.5 運(yùn)行爬蟲(chóng) 50
3.4.6 常見(jiàn)問(wèn)題 51
3.5 本章小結(jié) 52
第4章 Scrapy網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ) 53
4.1 使用Spider提取數(shù)據(jù) 53
4.1.1 Spider組件介紹 53
4.1.2 重寫(xiě)start_requests()方法 55
4.1.3 Request對(duì)象 57
4.1.4 使用選擇器提取數(shù)據(jù) 58
4.1.5 Response對(duì)象與XPath 59
4.1.6 Response對(duì)象與CSS 61
4.1.7 進(jìn)一步了解Response對(duì)象 62
4.1.8 多頁(yè)數(shù)據(jù)的爬取 63
4.2 使用Item封裝數(shù)據(jù) 64
4.2.1 定義Item和Field 65
4.2.2 使用ItemLoader填充容器 66
4.3 使用Pipeline處理數(shù)據(jù) 69
4.3.1 Item Pipeline介紹 70
4.3.2 編寫(xiě)自己的Item Pipeline 70
4.3.3 啟用Item Pipeline 71
4.3.4 多個(gè)Item Pipeline 71
4.3.5 保存為其他類(lèi)型文件 72
4.4 項(xiàng)目案例:爬取鏈家網(wǎng)二手房信息 75
4.4.1 項(xiàng)目需求 75
4.4.2 技術(shù)分析 76
4.4.3 代碼實(shí)現(xiàn)及解析 77
4.5 本章小結(jié) 85
第2篇 進(jìn)階篇
第5章 數(shù)據(jù)庫(kù)存儲(chǔ) 88
5.1 MySQL數(shù)據(jù)庫(kù) 88
5.1.1 關(guān)系型數(shù)據(jù)庫(kù)概述 88
5.1.2 下載和安裝MySQL數(shù)據(jù)庫(kù) 88
5.1.3 數(shù)據(jù)庫(kù)管理工具Navicat 92
5.1.4 Python訪問(wèn)MySQL數(shù)據(jù)庫(kù) 94
5.1.5 項(xiàng)目案例 97
5.2 MongoDB數(shù)據(jù)庫(kù) 100
5.2.1 NoSQL概述 100
5.2.2 MongoDB介紹 100
5.2.3 MongoDB的下載和安裝 101
5.2.4 Python訪問(wèn)MongoDB數(shù)據(jù)庫(kù) 102
5.2.5 項(xiàng)目案例 108
5.3 Redis數(shù)據(jù)庫(kù) 111
5.3.1 Redis的下載和安裝 111
5.3.2 Python訪問(wèn)Redis 113
5.3.3 項(xiàng)目案例 118
5.4 本章小結(jié) 121
第6章 JavaScript與AJAX數(shù)據(jù)爬取 122
6.1 JavaScript簡(jiǎn)介 122
6.2 項(xiàng)目案例:爬取QQ音樂(lè)榜單歌曲 122
6.2.1 項(xiàng)目需求 122
6.2.2 技術(shù)分析 123
6.2.3 代碼實(shí)現(xiàn)及解析 126
6.2.4 更常見(jiàn)的動(dòng)態(tài)網(wǎng)頁(yè) 128
6.3 AJAX簡(jiǎn)介 129
6.4 項(xiàng)目案例:爬取豆瓣電影信息 130
6.4.1 項(xiàng)目需求 130
6.4.2 技術(shù)分析 130
6.4.3 代碼實(shí)現(xiàn)及解析 133
6.5 本章小結(jié) 135
第7章 動(dòng)態(tài)渲染頁(yè)面的爬取 136
7.1 Selenium實(shí)現(xiàn)動(dòng)態(tài)頁(yè)面爬取 136
7.1.1 Selenium安裝 136
7.1.2 Selenium簡(jiǎn)單實(shí)現(xiàn) 137
7.1.3 Selenium語(yǔ)法 138
7.2 項(xiàng)目案例:爬取今日頭條熱點(diǎn)新聞 145
7.2.1 項(xiàng)目需求 145
7.2.2 技術(shù)分析 145
7.2.3 代碼實(shí)現(xiàn)及解析 147
7.3 Splash實(shí)現(xiàn)動(dòng)態(tài)頁(yè)面爬取 151
7.3.1 Splash介紹 151
7.3.2 Splash環(huán)境搭建 152
7.3.3 Splash模塊介紹 156
7.4 項(xiàng)目案例:爬取一號(hào)店中的iPhone手機(jī)信息 162
7.4.1 項(xiàng)目需求 162
7.4.2 技術(shù)分析 163
7.4.3 代碼實(shí)現(xiàn)及解析 165
7.5 本章小結(jié) 168
第8章 模擬登錄 169
8.1 模擬登錄解析 169
8.1.1 登錄過(guò)程解析 169
8.1.2 模擬登錄的實(shí)現(xiàn) 171
8.2 驗(yàn)證碼識(shí)別 174
8.2.1 使用OCR識(shí)別驗(yàn)證碼 174
8.2.2 處理復(fù)雜驗(yàn)證碼 176
8.2.3 五花八門(mén)的驗(yàn)證碼 177
8.3 Cookie自動(dòng)登錄 177
8.3.1 Cookie介紹 178
8.3.2 獲取Cookie的庫(kù)browsercookie 179
8.4 項(xiàng)目案例:爬取起點(diǎn)中文網(wǎng)某用戶的書(shū)架信息 180
8.4.1 項(xiàng)目需求 180
8.4.2 技術(shù)分析 180
8.4.3 代碼實(shí)現(xiàn)及解析 182
8.5 本章小結(jié) 184
第9章 突破反爬蟲(chóng)技術(shù) 185
9.1 反爬蟲(chóng)技術(shù)及突破措施 185
9.2 偽裝成不同的瀏覽器 187
9.2.1 UserAgentMiddleware中間件介紹 187
9.2.2 實(shí)現(xiàn)偽裝成隨機(jī)瀏覽器 188
9.2.3 更簡(jiǎn)單的方法 191
9.3 使用HTTP代理服務(wù)器 192
9.3.1 HTTP代理服務(wù)器 192
9.3.2 獲取免費(fèi)代理 193
9.3.3 實(shí)現(xiàn)隨機(jī)代理 199
9.4 本章小結(jié) 202
第10章 文件和圖片下載 203
10.1 文件下載 203
10.1.1 FilesPipeline執(zhí)行流程 203
10.2 項(xiàng)目案例:爬取seaborn案例源文件 204
10.2.1 項(xiàng)目需求 204
10.2.2 技術(shù)分析 206
10.2.3 代碼實(shí)現(xiàn)及解析 206
10.2.4 更多功能 211
10.3 圖片下載 212
10.4 項(xiàng)目案例:爬取攝圖網(wǎng)圖片 213
10.4.1 項(xiàng)目需求 213
10.4.2 技術(shù)分析 215
10.4.3 代碼實(shí)現(xiàn)及解析 215
10.5 本章小結(jié) 221
第3篇 高級(jí)篇
第11章 Scrapy-Redis實(shí)現(xiàn)分布式爬蟲(chóng) 224
11.1 分布式爬蟲(chóng)原理 224
11.2 Scrapy-Redis實(shí)現(xiàn)分布式爬蟲(chóng)分析 225
11.2.1 實(shí)現(xiàn)分布式爬蟲(chóng)思路 225
11.2.2 Scrapy-Redis代碼解析 226
11.2.3 分布式爬蟲(chóng)功能配置 231
11.3 項(xiàng)目案例:分布式爬蟲(chóng)爬取攝圖網(wǎng)圖片 233
11.3.1 技術(shù)分析 233
11.3.2 代碼實(shí)現(xiàn)及解析 234
11.4 本章小結(jié) 237
第12章 Scrapyd部署分布式爬蟲(chóng) 238
12.1 使用Scrapyd部署分布式爬蟲(chóng) 238
12.1.1 Scrapyd的安裝及運(yùn)行 238
12.1.2 Scrapyd功能介紹 241
12.2 使用Scrapyd-Client批量部署 244
12.3 使用Docker部署分布式爬蟲(chóng) 248
12.4 使用Gerapy管理分布式爬蟲(chóng) 253
12.5 本章小結(jié) 258
第13章 綜合項(xiàng)目:搶票軟件的實(shí)現(xiàn) 259
13.1 項(xiàng)目需求 259
13.2 技術(shù)分析 262
13.3 項(xiàng)目實(shí)現(xiàn)及解析 263
13.3.1 搭建Scrapy項(xiàng)目框架 263
13.3.2 實(shí)現(xiàn)獲取站點(diǎn)信息的爬蟲(chóng) 264
13.3.3 實(shí)現(xiàn)站點(diǎn)處理類(lèi) 266
13.3.4 實(shí)現(xiàn)購(gòu)票類(lèi) 267
13.3.5 實(shí)現(xiàn)購(gòu)票功能 280
13.3.6 運(yùn)行項(xiàng)目 282
13.3.7 優(yōu)化項(xiàng)目 282
13.4 本章小結(jié) 283