本書主要以純案例驅(qū)動(dòng)的形式,分別使用和結(jié)合使用requests庫、selenium庫,從互聯(lián)網(wǎng)上收集數(shù)據(jù)。主要內(nèi)容包括收集靜態(tài)網(wǎng)頁數(shù)據(jù),網(wǎng)頁解析,JSON數(shù)據(jù),JSON解析,多級翻頁,cookie和session,驗(yàn)證登錄,多線程,數(shù)據(jù)的存儲(chǔ),收集到的數(shù)據(jù)包括靜態(tài)網(wǎng)頁數(shù)據(jù)、json、圖片、音頻、視頻等數(shù)據(jù),并對獲取的數(shù)據(jù)進(jìn)行清洗。適合Python初學(xué)者,也適合研究Python的廣大科研人員、學(xué)者、工程技術(shù)人員。本教材采用純的案例,和簡單的注釋,其他一些先修的知識是在其他課程有開設(shè)。
現(xiàn)階段,隨著大數(shù)據(jù)和人工智能技術(shù)的研究不斷深入發(fā)展,網(wǎng)絡(luò)數(shù)據(jù)采集與清洗越來越具有較為廣泛的應(yīng)用范圍。本書是為數(shù)據(jù)采集與清洗課程編寫的教材,其內(nèi)容選取符合教學(xué)大綱要求,以案例驅(qū)動(dòng)展開,兼顧內(nèi)容的廣度和深度,適用面廣。
本書的第1章主要闡述網(wǎng)絡(luò)爬蟲的基本概念、基本流程、爬蟲合法性問題、反爬蟲技術(shù)以及爬蟲的預(yù)備知識。第2~9章主要講解爬蟲的各種技術(shù),分別討論Requests庫、JSON數(shù)據(jù)爬取、XPath解析及網(wǎng)頁數(shù)據(jù)爬取、IP代理、Selenium庫、Selenium與Requests結(jié)合使用、異步爬蟲、正則表達(dá)式等基本技術(shù)的實(shí)現(xiàn); 爬取的內(nèi)容包括HTML文檔、JSON數(shù)據(jù)、圖片、音頻、視頻,以及這些類型數(shù)據(jù)的持久化保存。第10章講解數(shù)據(jù)的簡單清洗。第11章講解一個(gè)綜合案例,結(jié)合Requests和Selenium,分別采用單線程和多線程實(shí)現(xiàn)對不同網(wǎng)站的數(shù)據(jù)爬取,并進(jìn)行相應(yīng)的數(shù)據(jù)清洗操作。
全書采用Python為主要描述語言。Python是一種面向?qū)ο蟮母呒壨ㄓ媚_本編程語言,其語法簡潔,簡單易懂。相比其他語言,Python更容易配置,在字符處理方面靈活,并且在爬蟲程序開發(fā)中具有先天的優(yōu)勢,是開發(fā)者的首選編程語言。Python最初被用于編寫Shell(自動(dòng)化腳本),伴隨著版本不斷更新以及語言新功能的加入,其作為爬蟲編程語言優(yōu)勢更加突出。因此,越來越多的開發(fā)者選擇Python用于大型爬蟲項(xiàng)目開發(fā)。Python自帶有多種爬取模板,可以利用Requests和Selenium第三方庫模擬人工瀏覽器訪問的行為,實(shí)現(xiàn)起來便捷; 爬蟲程序爬取網(wǎng)頁之后,需要對網(wǎng)頁進(jìn)行諸如過濾標(biāo)簽、提取文本等處理。Python擁有簡短的文檔處理功能,能夠用簡短代碼處理絕大部分文檔。
從課程性質(zhì)上來講,數(shù)據(jù)采集與清洗是一門專業(yè)選修課,側(cè)重于應(yīng)用。它的教學(xué)要求是: 理解互聯(lián)網(wǎng)大數(shù)據(jù)采集的主要技術(shù); 掌握各種典型爬蟲的技術(shù)原理、技術(shù)框架、實(shí)現(xiàn)方法、主要開源包的使用; 理解對爬蟲采集到的網(wǎng)頁數(shù)據(jù)的處理方法及文本處理,并會(huì)使用Python進(jìn)行技術(shù)實(shí)現(xiàn)。本書的學(xué)習(xí)過程通過案例驅(qū)動(dòng)的方式展開,幫助讀者貫穿爬蟲、數(shù)據(jù)清洗的過程,培養(yǎng)讀者掌握從互聯(lián)網(wǎng)上采集數(shù)據(jù)的技術(shù),能夠獨(dú)立完成數(shù)據(jù)采集和清洗工作,對培養(yǎng)學(xué)生的數(shù)據(jù)處理能力、信息分析與應(yīng)用能力、信息表達(dá)能力具有重要作用,為后期的生產(chǎn)實(shí)習(xí)、畢業(yè)設(shè)計(jì)以及未來的工作奠定一定的實(shí)踐基礎(chǔ)。
本書內(nèi)容以實(shí)戰(zhàn)為主,適合高等院校相關(guān)專業(yè)的學(xué)生閱讀,可以作為數(shù)據(jù)科學(xué)與大數(shù)據(jù)專業(yè)的本科或?qū)?平滩,也可以作為信息類相關(guān)專業(yè)的選修教材,也適合Python培訓(xùn)機(jī)構(gòu)作為實(shí)訓(xùn)教材。講課學(xué)時(shí)可設(shè)置為30~40學(xué)時(shí)。本書文字通俗,簡單易懂,便于自學(xué),也可供從事大數(shù)據(jù)處理等工作的科技人員參考。只需要掌握Python程序設(shè)計(jì)便可以學(xué)習(xí)本書。
配套資源
為了方便教學(xué),本書配有微課視頻、教學(xué)課件、源代碼。
(1) 獲取微課視頻方式:
讀者可以先掃描本書封底的文泉云盤防盜碼,再掃描書中相應(yīng)的視頻二維碼,即可觀看教學(xué)視頻。
(2) 其他資源可先掃描本書封底的文泉云盤防盜碼,再掃描下方二維碼,即可獲取。
教學(xué)課件
源代碼
第1章緒論
1.1網(wǎng)絡(luò)爬蟲的基本概念
1.2網(wǎng)絡(luò)爬蟲的基本流程
1.2.1發(fā)起請求
1.2.2獲取響應(yīng)內(nèi)容
1.2.3解析內(nèi)容
1.2.4持久化保存數(shù)據(jù)
1.3網(wǎng)絡(luò)爬蟲的合法性問題
1.4反爬蟲技術(shù)
1.4.1Useragent控制訪問
1.4.2IP限制訪問
1.4.3設(shè)置請求間隔
1.4.4通過參數(shù)加密和JavaScript腳本
1.4.5通過robots.txt來限制爬蟲
1.5網(wǎng)絡(luò)爬蟲的預(yù)備知識
1.5.1統(tǒng)一資源定位器
1.5.2超文本傳輸協(xié)議
1.5.3超文本標(biāo)記語言
1.6開發(fā)語言和開發(fā)環(huán)境
1.6.1開發(fā)語言
1.6.2第三方請求庫
1.6.3開發(fā)工具
第2章Requests庫
2.1安裝Requests庫
2.2Requests庫發(fā)送請求
2.3查看響應(yīng)內(nèi)容
2.3.1查看響應(yīng)狀態(tài)碼
2.3.2查看響應(yīng)的文本信息
2.3.3解決亂碼問題
2.3.4二進(jìn)制碼響應(yīng)內(nèi)容
2.3.5JSON響應(yīng)內(nèi)容
2.4定制請求頭部Headers
2.5Chrome瀏覽器開發(fā)者工具面板
2.5.1打開開發(fā)者工具面板
2.5.2Elements面板
2.5.3Network面板
2.6GET請求單個(gè)網(wǎng)頁的爬取案例
2.6.1不帶參數(shù)的GET請求
2.6.2攜帶參數(shù)的GET請求
第3章JSON數(shù)據(jù)爬取
3.1Ajax
3.1.1Ajax技術(shù)
3.1.2分析數(shù)據(jù)來源
3.2JSON
3.2.1JSON語法規(guī)則
3.2.2訪問JSON數(shù)據(jù)
3.2.3JSON文件讀寫操作
3.2.4JSON數(shù)據(jù)校驗(yàn)和格式化
3.3Ajax異步動(dòng)態(tài)加載的數(shù)據(jù)爬蟲
3.3.1帶參數(shù)的POST請求爬蟲
3.3.2多個(gè)網(wǎng)頁多鏈接GET請求爬蟲綜合案例
3.4POST請求的兩種參數(shù)格式
3.4.1Form Data類型
3.4.2Request Payload類型
第4章XPath解析及網(wǎng)頁數(shù)據(jù)爬取
4.1XPath簡介及安裝
4.2XPath節(jié)點(diǎn)
4.2.1基本值節(jié)點(diǎn)
4.2.2節(jié)點(diǎn)關(guān)系
4.3XPath語法
4.3.1選取節(jié)點(diǎn)語法
4.3.2謂語
4.3.3選取未知節(jié)點(diǎn)
4.3.4選取若干路徑
4.3.5初步使用XPath案例
4.4XPath表達(dá)式
4.4.1定位XPath搜索框
4.4.2在網(wǎng)頁上寫XPath表達(dá)式
4.5爬取HTML文檔數(shù)據(jù)案例
4.6爬取多頁HTML文檔數(shù)據(jù)案例
4.6.1翻頁在參數(shù)里
4.6.2翻頁在URL中
4.7圖片爬蟲案例
4.7.1單張圖片爬取
4.7.2多頁多幅圖片爬蟲案例
4.7.3多類多頁多圖爬蟲案例
第5章IP代理
5.1IP代理的作用
5.2IP代理使用方法
5.3搭建IP池
5.3.1獲取單頁IP
5.3.2獲取多頁IP
5.3.3檢測IP有效性
5.3.4建立IP池
5.4付費(fèi)IP代理使用
第6章Selenium庫
6.1Selenium安裝及環(huán)境配置
6.1.1Selenium安裝
6.1.2環(huán)境配置
6.1.3環(huán)境測試
6.2Selenium簡單使用及配置
6.2.1打開網(wǎng)頁
6.2.2規(guī)避偽裝機(jī)制
6.2.3常見的配置項(xiàng)
6.3Selenium的元素定位操作
6.3.1查看頁面元素
6.3.2通過ID定位元素
6.3.3通過name定位元素
6.3.4通過class定位元素
6.3.5通過tag定位元素
6.3.6通過link定位元素
6.3.7通過partial_link定位元素
6.3.8通過XPath定位元素
6.3.9通過CSS定位元素
6.3.10通過By定位元素
6.4Selenium等待機(jī)制
6.4.1固定等待
6.4.2隱式等待
6.4.3顯式等待WebDriverWait
6.5Selenium控制瀏覽器
6.5.1瀏覽器的常見操作
6.5.2不同窗口之間切換
6.5.3鼠標(biāo)事件
6.5.4鍵盤事件
6.5.5定位Frame/IFrame
6.5.6頁面下拉
6.5.7窗口截圖
6.5.8文件上傳
6.6Selenium爬蟲案例
6.6.1單頁爬取案例
6.6.2多頁爬取案例
第7章Requests與Selenium結(jié)合使用
7.1Selenium模擬登錄
7.1.1Selenium程序模擬登錄
7.1.2手動(dòng)輸入數(shù)據(jù)模擬登錄
7.2Cookie與Session機(jī)制
7.2.1Cookie機(jī)制
7.2.2Session機(jī)制
7.3Requests、Cookie、Selenium結(jié)合使用
7.4Selenium和Requests結(jié)合下載音樂
7.4.1單首音樂下載
7.4.2多首音樂下載
第8章異步爬蟲
8.1基本概念
8.2串行下載多個(gè)視頻
8.3使用線程池下載多個(gè)視頻
8.3.1Multiprocessing
8.3.2Threading
8.4使用協(xié)程下載多個(gè)視頻
第9章正則表達(dá)式
9.1正則函數(shù)
9.1.1re.match函數(shù)
9.1.2re.search函數(shù)
9.1.3re.sub函數(shù)
9.1.4re.compile函數(shù)
9.1.5re.findall函數(shù)
9.1.6re.finditer函數(shù)
9.1.7re.split函數(shù)
9.2正則表達(dá)式模式及實(shí)例
9.3正則表達(dá)式實(shí)例
9.3.1匹配字符串
9.3.2匹配字符組
9.3.3區(qū)間匹配
9.3.4特殊字符匹配
9.3.5取反
9.3.6快捷匹配數(shù)字和字符
9.3.7匹配空白字符
9.3.8單詞邊界
9.3.9快捷方式取反
9.3.10開始和結(jié)束
9.3.11匹配任意字符
9.3.12可選字符
9.3.13重復(fù)
9.3.14重復(fù)區(qū)間
9.3.15開閉區(qū)間
9.4正則表達(dá)式進(jìn)階
9.4.1分組
9.4.2或者條件
9.4.3分組的回溯引用
9.4.4斷言
第10章數(shù)據(jù)清洗
10.1數(shù)據(jù)分析流程
10.2數(shù)據(jù)清洗的概念及流程
10.3數(shù)據(jù)清洗常用方法
10.3.1讀取數(shù)據(jù)
10.3.2初步探索數(shù)據(jù)
10.3.3簡單處理數(shù)據(jù)
10.3.4重復(fù)值處理
10.3.5異常值處理
10.3.6處理缺失值
10.3.7爬取數(shù)據(jù)
10.3.8增加特征值
10.3.9格式與內(nèi)容清洗
10.3.10數(shù)據(jù)持久化保存
第11章綜合爬蟲案例
11.1數(shù)據(jù)爬取
11.1.1單線程爬取前程無憂
11.1.2多線程爬取英才網(wǎng)
11.1.3多線程爬取前程無憂
11.2簡單數(shù)據(jù)清洗
11.2.1導(dǎo)入庫
11.2.2初識數(shù)據(jù)
11.2.3簡單數(shù)據(jù)處理
11.2.4處理重復(fù)值
11.2.5處理空值
11.2.6字段內(nèi)容清洗
11.2.7提取并增加特征值
11.2.8處理異常值
11.2.9數(shù)據(jù)保存
參考文獻(xiàn)