第1章緒論
1.1網(wǎng)絡(luò)爬蟲的基本概念
1.2網(wǎng)絡(luò)爬蟲的基本流程
1.2.1發(fā)起請(qǐng)求
1.2.2獲取響應(yīng)內(nèi)容
1.2.3解析內(nèi)容
1.2.4持久化保存數(shù)據(jù)
1.3網(wǎng)絡(luò)爬蟲的合法性問(wèn)題
1.4反爬蟲技術(shù)
1.4.1Useragent控制訪問(wèn)
1.4.2IP限制訪問(wèn)
1.4.3設(shè)置請(qǐng)求間隔
1.4.4通過(guò)參數(shù)加密和JavaScript腳本
1.4.5通過(guò)robots.txt來(lái)限制爬蟲
1.5網(wǎng)絡(luò)爬蟲的預(yù)備知識(shí)
1.5.1統(tǒng)一資源定位器
1.5.2超文本傳輸協(xié)議
1.5.3超文本標(biāo)記語(yǔ)言
1.6開(kāi)發(fā)語(yǔ)言和開(kāi)發(fā)環(huán)境
1.6.1開(kāi)發(fā)語(yǔ)言
1.6.2第三方請(qǐng)求庫(kù)
1.6.3開(kāi)發(fā)工具
第2章Requests庫(kù)
2.1安裝Requests庫(kù)
2.2Requests庫(kù)發(fā)送請(qǐng)求
2.3查看響應(yīng)內(nèi)容
2.3.1查看響應(yīng)狀態(tài)碼
2.3.2查看響應(yīng)的文本信息
2.3.3解決亂碼問(wèn)題
2.3.4二進(jìn)制碼響應(yīng)內(nèi)容
2.3.5JSON響應(yīng)內(nèi)容
2.4定制請(qǐng)求頭部Headers
2.5Chrome瀏覽器開(kāi)發(fā)者工具面板
2.5.1打開(kāi)開(kāi)發(fā)者工具面板
2.5.2Elements面板
2.5.3Network面板
2.6GET請(qǐng)求單個(gè)網(wǎng)頁(yè)的爬取案例
2.6.1不帶參數(shù)的GET請(qǐng)求
2.6.2攜帶參數(shù)的GET請(qǐng)求
第3章JSON數(shù)據(jù)爬取
3.1Ajax
3.1.1Ajax技術(shù)
3.1.2分析數(shù)據(jù)來(lái)源
3.2JSON
3.2.1JSON語(yǔ)法規(guī)則
3.2.2訪問(wèn)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請(qǐng)求爬蟲
3.3.2多個(gè)網(wǎng)頁(yè)多鏈接GET請(qǐng)求爬蟲綜合案例
3.4POST請(qǐng)求的兩種參數(shù)格式
3.4.1Form Data類型
3.4.2Request Payload類型
第4章XPath解析及網(wǎng)頁(yè)數(shù)據(jù)爬取
4.1XPath簡(jiǎn)介及安裝
4.2XPath節(jié)點(diǎn)
4.2.1基本值節(jié)點(diǎn)
4.2.2節(jié)點(diǎn)關(guān)系
4.3XPath語(yǔ)法
4.3.1選取節(jié)點(diǎn)語(yǔ)法
4.3.2謂語(yǔ)
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)頁(yè)上寫XPath表達(dá)式
4.5爬取HTML文檔數(shù)據(jù)案例
4.6爬取多頁(yè)HTML文檔數(shù)據(jù)案例
4.6.1翻頁(yè)在參數(shù)里
4.6.2翻頁(yè)在URL中
4.7圖片爬蟲案例
4.7.1單張圖片爬取
4.7.2多頁(yè)多幅圖片爬蟲案例
4.7.3多類多頁(yè)多圖爬蟲案例
第5章IP代理
5.1IP代理的作用
5.2IP代理使用方法
5.3搭建IP池
5.3.1獲取單頁(yè)IP
5.3.2獲取多頁(yè)IP
5.3.3檢測(cè)IP有效性
5.3.4建立IP池
5.4付費(fèi)IP代理使用
第6章Selenium庫(kù)
6.1Selenium安裝及環(huán)境配置
6.1.1Selenium安裝
6.1.2環(huán)境配置
6.1.3環(huán)境測(cè)試
6.2Selenium簡(jiǎn)單使用及配置
6.2.1打開(kāi)網(wǎng)頁(yè)
6.2.2規(guī)避偽裝機(jī)制
6.2.3常見(jiàn)的配置項(xiàng)
6.3Selenium的元素定位操作
6.3.1查看頁(yè)面元素
6.3.2通過(guò)ID定位元素
6.3.3通過(guò)name定位元素
6.3.4通過(guò)class定位元素
6.3.5通過(guò)tag定位元素
6.3.6通過(guò)link定位元素
6.3.7通過(guò)partial_link定位元素
6.3.8通過(guò)XPath定位元素
6.3.9通過(guò)CSS定位元素
6.3.10通過(guò)By定位元素
6.4Selenium等待機(jī)制
6.4.1固定等待
6.4.2隱式等待
6.4.3顯式等待WebDriverWait
6.5Selenium控制瀏覽器
6.5.1瀏覽器的常見(jiàn)操作
6.5.2不同窗口之間切換
6.5.3鼠標(biāo)事件
6.5.4鍵盤事件
6.5.5定位Frame/IFrame
6.5.6頁(yè)面下拉
6.5.7窗口截圖
6.5.8文件上傳
6.6Selenium爬蟲案例
6.6.1單頁(yè)爬取案例
6.6.2多頁(yè)爬取案例
第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é)合下載音樂(lè)
7.4.1單首音樂(lè)下載
7.4.2多首音樂(lè)下載
第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開(kāi)始和結(jié)束
9.3.11匹配任意字符
9.3.12可選字符
9.3.13重復(fù)
9.3.14重復(fù)區(qū)間
9.3.15開(kāi)閉區(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簡(jiǎn)單處理數(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單線程爬取前程無(wú)憂
11.1.2多線程爬取英才網(wǎng)
11.1.3多線程爬取前程無(wú)憂
11.2簡(jiǎn)單數(shù)據(jù)清洗
11.2.1導(dǎo)入庫(kù)
11.2.2初識(shí)數(shù)據(jù)
11.2.3簡(jiǎn)單數(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)