Python是數(shù)據(jù)分析的語言,而網(wǎng)絡(luò)中的數(shù)據(jù)和信息很多,如何從中獲取需要的數(shù)據(jù)和信息呢?簡單、直接的方法就是用爬蟲技術(shù)來解決。本書是一本教初學(xué)者學(xué)習(xí)如何爬取網(wǎng)絡(luò)數(shù)據(jù)和信息的入門讀物。書中不僅有Python的相關(guān)內(nèi)容,而且還有數(shù)據(jù)處理和數(shù)據(jù)挖掘等方面的內(nèi)容。本書內(nèi)容非常實用,講解時穿插了22個爬蟲實戰(zhàn)案例,可以大大提高讀者的實際動手能力。本書共分12章,核心主題包括Python零基礎(chǔ)語法入門、爬蟲原理和網(wǎng)頁構(gòu)造、我的第壹個爬蟲程序、正則表達式、Lxml庫與Xpath語法、使用API、數(shù)據(jù)庫存儲、多進程爬蟲、異步加載、表單交互與模擬登錄、Selenium模擬瀏覽器、Scrapy爬蟲框架。此外,書中通過一些典型爬蟲案例,講解了有經(jīng)緯信息的地圖圖表和詞云的制作方法,讓讀者體驗數(shù)據(jù)背后的樂趣。本書適合爬蟲技術(shù)初學(xué)者、愛好者及高等院校的相關(guān)學(xué)生,也適合數(shù)據(jù)爬蟲工程師作為參考讀物,同時也適合各大Python數(shù)據(jù)分析的培訓(xùn)機構(gòu)作為教材使用。
詳解網(wǎng)絡(luò)爬蟲的原理、工具、框架和方法,內(nèi)容新,實戰(zhàn)案例多
詳解從簡單網(wǎng)頁到異步加載網(wǎng)頁,從簡單存儲到數(shù)據(jù)庫存儲,從簡單爬蟲到框架爬蟲等技術(shù)
22個網(wǎng)絡(luò)爬蟲綜合實戰(zhàn)案例、30個網(wǎng)站信息提取、2500余行代碼
詳解爬蟲的3大方法:正則表達式、BeautifulSoup 4庫和Lxml庫
詳解爬取數(shù)據(jù)的4大存儲方式:TXT、CSV、MongoDB和MySQL
詳解Scrapy爬蟲框架的安裝、項目創(chuàng)建、文件使用及爬取數(shù)據(jù)的存儲
隨著Internet的飛速發(fā)展,互聯(lián)網(wǎng)中每天都會產(chǎn)生大量的非結(jié)構(gòu)化數(shù)據(jù)。如何從這些非結(jié)構(gòu)化數(shù)據(jù)中提取有效信息,供人們在學(xué)習(xí)和工作中使用呢?這個問題促使網(wǎng)絡(luò)爬蟲技術(shù)應(yīng)運而生。由于Python語言簡單易用,而且還提供了優(yōu)秀易用的第三方庫和多樣的爬蟲框架,所以使得它成為了網(wǎng)絡(luò)爬蟲技術(shù)的主力軍。近年來,大數(shù)據(jù)技術(shù)發(fā)展迅速,數(shù)據(jù)爬取作為數(shù)據(jù)分析的一環(huán)也顯得尤為重要。程序員要進入與數(shù)據(jù)處理、分析和挖掘等相關(guān)的行業(yè),就必須要掌握Python語言及其網(wǎng)絡(luò)爬蟲的運用,這樣才能在就業(yè)嚴峻的市場環(huán)境中有較強的職場競爭力和較好的職業(yè)前景。
目前,圖書市場上僅有的幾本Python網(wǎng)絡(luò)爬蟲類圖書,要么是國外優(yōu)秀圖書,但書籍翻譯隱晦,閱讀難度大,而且往往由于網(wǎng)絡(luò)原因,使得書中的案例不能正常使用,因此不適合初學(xué)者;要么是國內(nèi)資料,但質(zhì)量參差不齊,而且不成系統(tǒng),同樣不適合初學(xué)者。整個圖書市場上還鮮見一本適合初學(xué)者閱讀的Python網(wǎng)絡(luò)爬蟲類圖書。本書便是基于這個原因而編寫。本書從Python語言基礎(chǔ)講起,然后深入淺出地介紹了爬蟲原理、各種爬蟲技術(shù)及22個爬蟲實戰(zhàn)案例。本書全部選用國內(nèi)網(wǎng)站作為爬蟲案例,便于讀者理解和實現(xiàn),同時也可以大大提高讀者對Python網(wǎng)絡(luò)爬蟲項目的實戰(zhàn)能力。
本書特色
1.涵蓋Windows 7系統(tǒng)第三方庫的安裝與配置
本書包含Python模塊源的配置、第三方庫的安裝和使用,以及PyCharm的安裝和使用。
2.對網(wǎng)絡(luò)爬蟲技術(shù)進行了原理性的分析
本書從一開始便對網(wǎng)絡(luò)連接和爬蟲原理做了基本介紹,并對網(wǎng)絡(luò)爬蟲的基本流程做了詳細講解,便于讀者理解本書后面章節(jié)中的爬蟲項目案例。
3.內(nèi)容全面,應(yīng)用性強
本書介紹了從單線程到多進程,從同步加載到異步加載,從簡單爬蟲到框架爬蟲等一系列爬蟲技術(shù),具有超強的實用性,讀者可以隨時查閱和參考。
4.項目案例典型,實戰(zhàn)性強,有較高的應(yīng)用價值
本書介紹了22個爬蟲項目實戰(zhàn)案例。這些案例來源于不同的網(wǎng)站頁面,具有很高的應(yīng)用價值。而且這些案例分別使用了不同的爬蟲技術(shù)實現(xiàn),便于讀者融會貫通地理解書中介紹的技術(shù)。
本書內(nèi)容
第1章Python零基礎(chǔ)語法入門
本章介紹了Python和PyCharm的安裝及Python最為簡單的語法基礎(chǔ),包括簡單的流程控制、數(shù)據(jù)結(jié)構(gòu)、文件操作和面向?qū)ο蟮木幊趟枷搿?
第2章爬蟲原理和網(wǎng)頁構(gòu)造
本章通過介紹網(wǎng)絡(luò)連接原理,進而介紹了爬蟲的原理,講解了爬蟲的基本流程,另外還介紹了如何使用Chrome瀏覽器認識網(wǎng)頁構(gòu)造和查詢網(wǎng)頁信息。
第3章我的第一個爬蟲程序
本章主要介紹了安裝請求和解析網(wǎng)頁的Python第三方庫、Requests庫和BeautifulSoup庫的使用方法,最后通過綜合案例手把手教會讀者編寫一個簡單的爬蟲程序。
第4章正則表達式
本章主要介紹了正則表達式的常用符號及Python中re模塊的使用方法,在不需要解析庫的情況下完成一個簡單的爬蟲程序。
第5章Lxml庫與Xpath語法
本章主要介紹了Lxml庫在Mac和Linux環(huán)境中的安裝方法、Lxml庫的使用方法及Xpath語法知識,并且通過案例對正則表達式、BeautifulSoup和Lxml進行了性能對比,最后通過綜合案例鞏固Xpath語言的相關(guān)知識。
第6章使用API
本章主要介紹了API的使用和調(diào)用方法,對API返回的JSON數(shù)據(jù)進行解析,最后通過使用API完成一些有趣的綜合案例。
第7章數(shù)據(jù)庫存儲
本章主要介紹了非關(guān)系型數(shù)據(jù)庫MongoDB和關(guān)系型數(shù)據(jù)庫MySQL的相關(guān)知識,并通過綜合案例展示了Python對兩種數(shù)據(jù)庫的存儲方法。
第8章多進程爬蟲
本章主要介紹了多線程及其概念,并通過案例對串行爬蟲和多進程爬蟲的性能進行了對比,最后通過綜合案例介紹了多進程爬取數(shù)據(jù)的方法和技巧。
第9章異步加載
本章主要介紹了異步加載的基本概念,以及如何針對異步加載網(wǎng)頁使用逆向工程抓取數(shù)據(jù),最后通過綜合案例講解了逆向工程的使用方法和常用技巧。
第10章表單交互與模擬登錄
本章主要介紹了Requests庫的POST方法,通過觀測表單源代碼和逆向工程來填寫表單以獲取網(wǎng)頁信息,以及通過提交cookie信息來模擬登錄網(wǎng)站。
第11章Selenium模擬瀏覽器
本章主要介紹了Selenium模塊的安裝、Selenium瀏覽器的選擇和安裝,以及Selenium模塊的使用方法,最后通過綜合案例介紹了如何對采用異步加載技術(shù)的網(wǎng)頁進行爬蟲。
第12章Scrapy爬蟲框架
本章主要介紹了Windows 7環(huán)境中的Scrapy安裝和創(chuàng)建爬蟲項目的過程,并通過案例詳細講解了各個Scrapy文件的作用和使用方法,而且通過多個綜合案例講解了如何通過Scrapy爬蟲框架把數(shù)據(jù)存儲到不同類型的文件中,最后講解了如何編寫跨頁面網(wǎng)站的爬蟲代碼。
本書讀者對象
�8�5數(shù)據(jù)爬蟲初學(xué)者;
�8�5數(shù)據(jù)分析初級人員;
�8�5網(wǎng)絡(luò)爬蟲愛好者;
�8�5數(shù)據(jù)爬蟲工程師;
�8�5 Python初級開發(fā)人員;
�8�5需要提高動手能力的爬蟲技術(shù)人員;
�8�5高等院校的相關(guān)學(xué)生。
本書配套資源及獲取方式
本書涉及的源代碼文件等配套學(xué)習(xí)資源需要讀者自行下載。請登錄機械工業(yè)出版社華章公司的網(wǎng)站www.hzbook.com,然后搜索到本書頁面,按照頁面上的說明進行下載即可。
雖然我們對書中所述內(nèi)容都盡量核實,并多次進行文字校對,但因時間有限,加之水平所限,書中疏漏和錯誤之處在所難免,敬請廣大讀者批評、指正。聯(lián)系我們請發(fā)E-mail到hzbook2017 163.com。
編著者
目錄
前言
第1章 Python零基礎(chǔ)語法入門1
1.1 Python與PyCharm安裝1
1.1.1 Python安裝(Windows、Mac和Linux)1
1.1.2 PyCharm安裝3
1.2 變量和字符串3
1.2.1 變量4
1.2.2 字符串的“加法”和“乘法”4
1.2.3 字符串的切片和索引5
1.2.4 字符串方法5
1.3 函數(shù)與控制語句7
1.3.1 函數(shù)7
1.3.2 判斷語句8
1.3.3 循環(huán)語句8
1.4 Python數(shù)據(jù)結(jié)構(gòu)9
1.4.1 列表9
1.4.2 字典11
1.4.3 元組和集合11
1.5 Python文件操作11
1.5.1 打開文件11
1.5.2 讀寫文件12
1.5.3 關(guān)閉文件13
1.6 Python面向?qū)ο?3
1.6.1 定義類14
1.6.2 實例屬性14
1.6.3 實例方法15
1.6.4 類的繼承16
第2章 爬蟲原理和網(wǎng)頁構(gòu)造17
2.1 爬蟲原理17
2.1.1 網(wǎng)絡(luò)連接17
2.1.2 爬蟲原理18
2.2 網(wǎng)頁構(gòu)造21
2.2.1 Chrome瀏覽器的安裝21
2.2.2 網(wǎng)頁構(gòu)造22
2.2.3 查詢網(wǎng)頁信息23
第3章 我的第一個爬蟲程序26
3.1 Python第三方庫26
3.1.1 Python第三方庫的概念26
3.1.2 Python第三方庫的安裝方法27
3.1.3 Python第三方庫的使用方法29
3.2 爬蟲三大庫30
3.2.1 Requests庫30
3.2.2 BeautifulSoup庫32
3.2.3 Lxml庫36
3.3 綜合案例1——爬取北京地區(qū)短租房信息37
3.3.1 爬蟲思路分析37
3.3.2 爬蟲代碼及分析38
3.4 綜合案例2——爬取酷狗TOP500的數(shù)據(jù)41
3.4.1 爬蟲思路分析41
3.4.2 爬蟲代碼及分析43
第4章 正則表達式45
4.1 正則表達式常用符號45
4.1.1 一般字符45
4.1.2 預(yù)定義字符集46
4.1.3 數(shù)量詞46
4.1.4 邊界匹配47
4.2 re模塊及其方法48
4.2.1 search()函數(shù)48
4.2.2 sub()函數(shù)49
4.2.3 findall()函數(shù)49
4.2.4 re模塊修飾符51
4.3 綜合案例1——爬取《斗破蒼穹》全文小說53
4.3.1 爬蟲思路分析53
4.3.2 爬蟲代碼及分析55
4.4 綜合案例2——爬取糗事百科網(wǎng)的段子信息56
4.4.1 爬蟲思路分析56
4.4.2 爬蟲代碼及分析58
第5章 Lxml庫與Xpath語法63
5.1 Lxml庫的安裝與使用方法63
5.1.1 Lxml庫的安裝(Mac、Linux)63
5.1.2 Lxml庫的使用64
5.2 Xpath語法68
5.2.1 節(jié)點關(guān)系68
5.2.2 節(jié)點選擇70
5.2.3 使用技巧70
5.2.4 性能對比74
5.3 綜合案例1——爬取豆瓣網(wǎng)圖書TOP250的數(shù)據(jù)77
5.3.1 將數(shù)據(jù)存儲到CSV文件中77
5.3.2 爬蟲思路分析78
5.3.3 爬蟲代碼及分析80
5.4 綜合案例2——爬取起點中文網(wǎng)小說信息83
5.4.1 將數(shù)據(jù)存儲到Excel文件中83
5.4.2 爬蟲思路分析84
5.4.3 爬蟲代碼及分析86
第6章 使用API88
6.1 API的使用88
6.1.1 API概述88
6.1.2 API使用方法89
6.1.3 API驗證91
6.2 解析JSON數(shù)據(jù)93
6.2.1 JSON解析庫93
6.2.2 斯必克API調(diào)用94
6.2.3 百度地圖API調(diào)用96
6.3 綜合案例1——爬取PEXELS圖片98
6.3.1 圖片爬取方法98
6.3.2 爬蟲思路分析99
6.3.3 爬蟲代碼及分析100
6.4 綜合案例2——爬取糗事百科網(wǎng)的用戶地址信息102
6.4.1 地圖的繪制102
6.4.2 爬取思路分析105
6.4.3 爬蟲代碼及分析106
第7章 數(shù)據(jù)庫存儲109
7.1 MongoDB數(shù)據(jù)庫109
7.1.1 NoSQL概述109
7.1.2 MongoDB的安裝109
7.1.3 MongoDB的使用115
7.2 MySQL數(shù)據(jù)庫117
7.2.1 關(guān)系型數(shù)據(jù)庫概述117
7.2.2 MySQL的安裝117
7.2.3 MySQL的使用123
7.3 綜合案例1——爬取豆瓣音樂TOP250的數(shù)據(jù)126
7.3.1 爬蟲思路分析126
7.3.2 爬蟲代碼及分析127
7.4 綜合案例2——爬取豆瓣電影TOP250的數(shù)據(jù)132
7.4.1 爬蟲思路分析132
7.4.2 爬蟲代碼及分析133
第8章 多進程爬蟲139
8.1 多線程與多進程139
8.1.1 多線程和多進程概述139
8.1.2 多進程使用方法140
8.1.3 性能對比140
8.2 綜合案例1——爬取簡書網(wǎng)熱評文章143
8.2.1 爬蟲思路分析143
8.2.2 爬蟲代碼及分析147
8.3 綜合案例2——爬取轉(zhuǎn)轉(zhuǎn)網(wǎng)二手市場商品信息150
8.3.1 爬蟲思路分析150
8.3.2 爬蟲代碼及分析152
第9章 異步加載159
9.1 異步加載技術(shù)與爬蟲方法159
9.1.1 異步加載技術(shù)概述159
9.1.2 異步加載網(wǎng)頁示例159
9.1.3 逆向工程162
9.2 綜合案例1——爬取簡書網(wǎng)用戶動態(tài)信息165
9.2.1 爬蟲思路分析165
9.2.2 爬蟲代碼及分析171
9.3 綜合案例2——爬取簡書網(wǎng)7日熱門信息173
9.3.1 爬蟲思路分析173
9.3.2 爬蟲代碼及分析179
第10章 表單交互與模擬登錄182
10.1 表單交互182
10.1.1 POST方法182
10.1.2 查看網(wǎng)頁源代碼提交表單182
10.1.3 逆向工程提交表單185
10.2 模擬登錄187
10.2.1 Cookie概述187
10.2.2 提交Cookie模擬登錄187
10.3 綜合案例1——爬取拉勾網(wǎng)招聘信息188
10.3.1 爬蟲思路分析188
10.3.2 爬蟲代碼及分析193
10.4 綜合案例2——爬取新浪微博好友圈信息195
10.4.1 詞云制作195
10.4.2 爬蟲思路分析202
10.4.3 爬蟲代碼及分析206
第11章 Selenium模擬瀏覽器209
11.1 Selenium和PhantomJS209
11.1.1 Selenium的概念和安裝209
11.1.2 瀏覽器的選擇和安裝209
11.2 Selenium和PhantomJS的配合使用213
11