Python爬蟲實(shí)戰(zhàn)基礎(chǔ)
鏈接:https://pan.baidu.com/s/1HpC-uldq1jw5-a2S80XYig?pwd=6a5f?
提取碼:6a5f

本書介紹Python網(wǎng)絡(luò)爬蟲開發(fā)從業(yè)者應(yīng)掌握的基礎(chǔ)技能。本書以網(wǎng)絡(luò)爬蟲為核心,涉及大大小小數(shù)十個(gè)能力體系。本書的前半部分介紹爬蟲開發(fā)的基礎(chǔ)知識(shí),包括爬蟲開發(fā)必備的環(huán)境搭建方法、開發(fā)中常用工具的使用方法和技巧、網(wǎng)頁的構(gòu)成原理和網(wǎng)頁信息提取的方法、常用數(shù)據(jù)庫的使用方法和應(yīng)用場(chǎng)景,如通過Redis內(nèi)置的布隆過濾器實(shí)現(xiàn)大規(guī)模URL地址的去重任務(wù)。本書的后半部分主要講解網(wǎng)絡(luò)爬蟲開發(fā)所需的必要能力,包括網(wǎng)絡(luò)通信的底層原理、背后涉及的互聯(lián)網(wǎng)協(xié)議標(biāo)準(zhǔn)及如何對(duì)這些協(xié)議進(jìn)行分析并加以利用,使用Docker部署網(wǎng)絡(luò)爬蟲所需的環(huán)境和爬蟲項(xiàng)目的打包部署,使用網(wǎng)絡(luò)爬蟲的核心請(qǐng)求庫實(shí)現(xiàn)與服務(wù)器端和客戶端的通信和交互,使用自動(dòng)化神器Selenium對(duì)復(fù)雜的爬蟲需求進(jìn)行快速實(shí)現(xiàn),以及網(wǎng)絡(luò)爬蟲的多任務(wù)開發(fā),重點(diǎn)是通過多線程和多進(jìn)程來提高爬蟲效率。
本書面向準(zhǔn)備從事或正在從事網(wǎng)絡(luò)爬蟲開發(fā)的從業(yè)者以及對(duì)網(wǎng)絡(luò)爬蟲有濃厚興趣的愛好者。
目錄
第1章基礎(chǔ)開發(fā)環(huán)境
1.1Docker環(huán)境的搭建
1.1.1安裝Docker
1.1.2用Docker安裝MySQL
1.1.3用Docker安裝Redis
1.1.4用Docker安裝MongoDB
1.1.5用Docker安裝Selenium Grid
1.2Python的開發(fā)環(huán)境
1.2.1Python的優(yōu)點(diǎn)、缺點(diǎn)
1.2.2Python解釋器
1.2.3Python IDE
1.3JavaScript的運(yùn)行環(huán)境
1.4輔助工具的安裝
1.4.1安裝Git
1.4.2安裝ADB驅(qū)動(dòng)
1.4.3安裝Fiddler
1.4.4安裝Postman
1.4.5XPath測(cè)試插件
第2章HTML頁面的信息提取
2.1HTML頁面解析概述
2.1.1HTML頁面的構(gòu)成原理
2.1.2Python提取HTML頁面信息的方式
2.2XPath提取HTML頁面信息
2.2.1XPath基礎(chǔ)
2.2.2XPath教程
2.2.3XPath技巧
2.3正則表達(dá)式
2.3.1基本語法
2.3.2表達(dá)式全集
2.3.3表達(dá)式字符組、優(yōu)先權(quán)
2.3.4表達(dá)式的分組與引用
2.3.5Python re模塊
2.4案例
2.4.1正則校驗(yàn)公民身份號(hào)碼的合法性
2.4.2下載微信文章及其靜態(tài)資源
第3章日志模塊
3.1日志基礎(chǔ)
3.1.1應(yīng)用場(chǎng)景及重要性
3.1.2日志的使用
3.2四大組件之Logger(記錄器)
3.2.1Logger的作用
3.2.2Logger的屬性和方法
3.2.3Logger的常用配置方法
3.2.4案例: 為日志記錄器添加自定義過濾器
3.3四大組件之Handler(處理器)
3.3.1Handle的作用
3.3.2Handle的屬性和方法
3.3.3Handle的常用方法
3.3.4內(nèi)置Handler類型及功能
3.3.5案例一: 將日志寫入磁盤文件
3.3.6案例二: 將日志文件按時(shí)間分割
3.3.7案例三: 將日志文件按大小分割
3.3.8案例四: 給指定郵箱發(fā)送日志消息
3.3.9案例五: Web日志服務(wù)器的傳參、認(rèn)證和調(diào)用
3.4四大組件之Formatter(格式化器)
3.4.1Formatter的屬性和方法
3.4.2可選格式化字段
3.5四大組件之Filters(過濾器)
3.5.1Filters的屬性和方法
3.5.2自定義Filters
3.6LogRecord對(duì)象
3.6.1LogRecord的屬性和方法
3.6.2構(gòu)造LogRecord實(shí)例化對(duì)象
3.6.3案例: Web日志服務(wù)器恢復(fù)LogRecord對(duì)象
3.7日志的配置
3.7.1顯式配置
3.7.2通過fileConfig配置
3.7.3通過dictConfig配置
第4章數(shù)據(jù)庫操作
4.1通過ORM模型操作MySQL
4.1.1什么是ORM模型
4.1.2SQLAlchemy是什么
4.1.3SQLAlchemy基礎(chǔ)
4.1.4數(shù)據(jù)庫引擎配置
4.1.5創(chuàng)建會(huì)話
4.1.6創(chuàng)建聲明性類
4.1.7定義數(shù)據(jù)列及類型
4.1.8增、改、查、刪
4.1.9ORM事務(wù)操作
4.1.10常用關(guān)系表的創(chuàng)建
4.1.11關(guān)系表數(shù)據(jù)的插入
4.1.12連接查詢
4.1.13關(guān)系表數(shù)據(jù)的刪除
4.2MongoDB數(shù)據(jù)庫
4.2.1MongoDB基礎(chǔ)
4.2.2MongoDB文檔的增、刪、改
4.2.3MongoDB文檔查詢
4.2.4MongoDB的聚合
4.2.5MongoDB索引操作
4.2.6MongoDB的復(fù)制
4.2.7MongoDB的備份與恢復(fù)
4.2.8Python與MongoDB交互
4.3Redis操作
4.3.1Redis基礎(chǔ)
4.3.2Python操作Redis的流程
4.3.3Python中常用的Redis命令
4.3.4Python中使用Redis去重
4.3.5Redis內(nèi)置布隆過濾器
4.3.6使用Redis作消息隊(duì)列
4.3.7打造Redis發(fā)布訂閱框架
第5章機(jī)制與協(xié)議
5.1TCP/IP協(xié)議簇
5.1.1互聯(lián)網(wǎng)協(xié)議套件
5.1.2TCP/IP協(xié)議簇的組成
5.1.3TCP/IP參考模型
5.2TCP與UDP協(xié)議
5.2.1socket通信
5.2.2UDP協(xié)議
5.2.3TCP協(xié)議
5.2.4TCP的三次握手
5.2.5TCP的四次揮手
5.2.6TCP長(zhǎng)連接
5.3HTTP與HTTPS協(xié)議
5.3.1HTTP協(xié)議的實(shí)現(xiàn)
5.3.2使用socket實(shí)現(xiàn)HTTP協(xié)議服務(wù)器
5.3.3HTTPS協(xié)議的實(shí)現(xiàn)
5.3.4關(guān)于TLS與SSL協(xié)議
5.3.5一次爬蟲請(qǐng)求的過程
5.3.6HTTP響應(yīng)狀態(tài)碼
5.3.7HTTP請(qǐng)求頭與響應(yīng)頭
5.4WebSocket協(xié)議
5.4.1協(xié)議內(nèi)容
5.4.2Python連接WebSocket
5.4.3案例: 虛擬貨幣實(shí)時(shí)價(jià)格爬蟲
5.5SMTP協(xié)議與IMAP協(xié)議
5.5.1SMTP協(xié)議
5.5.2IMAP協(xié)議
5.5.3Python使用SMTP關(guān)鍵接口
5.5.4Python使用IMAP關(guān)鍵接口
5.5.5案例一: 發(fā)送HTML格式的郵件
5.5.6案例二: 發(fā)送帶附件的郵件
5.5.7案例三: 發(fā)送顯示圖片的HTML格式的郵件
5.5.8案例四: 自動(dòng)讀取郵箱驗(yàn)證碼
5.6Robots協(xié)議
5.7安全與會(huì)話機(jī)制
5.7.1CSRF攻擊與保護(hù)
5.7.2CSRF驗(yàn)證過程
5.7.3Cookie機(jī)制
5.7.4會(huì)話
5.7.5Token與JWT
5.7.6案例: 獲取本地Chrome瀏覽器中的任意Cookie信息
第6章工具教程
6.1Fiddler高級(jí)抓包教程
6.1.1Fiddler的基礎(chǔ)功能
6.1.2抓取HTTPS請(qǐng)求
6.1.3Fiddler的過濾規(guī)則
6.1.4Fiddler斷點(diǎn)調(diào)試
6.1.5Fiddler手機(jī)抓包
6.1.6App的防抓包措施
6.1.7安卓系統(tǒng)模擬器抓包
6.1.8一鍵生成Python代碼
6.1.9自定義請(qǐng)求響應(yīng)規(guī)則
6.1.10響應(yīng)數(shù)據(jù)轉(zhuǎn)發(fā)腳本
6.1.11Fiddler腳本開發(fā)
6.2Postman高級(jí)教程
6.2.1Postman的基礎(chǔ)
6.2.2設(shè)置Postman變量
6.2.3編寫動(dòng)態(tài)變量邏輯
6.2.4Postman Cookie管理
6.2.5請(qǐng)求及響應(yīng)相關(guān)功能
6.2.6生成Python代碼
6.3PyCharm的高級(jí)功能
6.3.1PyCharm斷點(diǎn)調(diào)試
6.3.2SFTP同步代碼到服務(wù)器
6.3.3使用遠(yuǎn)程解釋器環(huán)境
6.3.4調(diào)試JavaScript代碼
6.3.5PyCharm的常用快捷鍵
6.3.6PyCharm數(shù)據(jù)庫管理
6.3.7智能補(bǔ)全插件aiXcode
6.3.8PyCharm中使用Git版本管理
6.4Git教程
6.4.1Git管理模型
6.4.2倉庫基礎(chǔ)操作
6.4.3Git分支的管理
6.4.4Git標(biāo)簽的使用
6.4.5Git團(tuán)隊(duì)協(xié)作流程
6.4.6案例: 用GitHub完成團(tuán)隊(duì)協(xié)作
第7章Docker教程
7.1Docker的服務(wù)架構(gòu)
7.1.1什么是Docker
7.1.2Docker架構(gòu)模型
7.2Docker基礎(chǔ)
7.2.1容器的應(yīng)用
7.2.2鏡像的應(yīng)用
7.3Docker數(shù)據(jù)與網(wǎng)絡(luò)
7.3.1數(shù)據(jù)共享與持久化
7.3.2Docker的網(wǎng)絡(luò)模式
7.4Dockerfile的最佳實(shí)踐
7.4.1一般準(zhǔn)則和建議
7.4.2Dockerfile指令
7.4.3多階段構(gòu)建
7.4.4案例: 從Python 3解釋器到項(xiàng)目代碼的構(gòu)建
7.5Docker倉庫管理
7.5.1使用官方倉庫Docker Hub
7.5.2搭建私有倉庫Registry
7.5.3搭建企業(yè)級(jí)倉庫Harbor
7.6Docker Compose的容器編排
7.6.1YAML文件格式基礎(chǔ)
7.6.2Compose的安裝與卸載
7.6.3常用的yml配置指令
7.6.4常用的Compose 命令
7.6.5Compose編排案例
7.7案例: 容器化部署爬蟲項(xiàng)目
第8章requests教程
8.1requests基礎(chǔ)
8.1.1requests的環(huán)境
8.1.2requests的簡(jiǎn)介
8.2Request
8.2.1Request的流程
8.2.2Request的接口
8.2.3Request控制訪問參數(shù)
8.3Response
8.3.1Response對(duì)象的屬性
8.3.2Response對(duì)象的方法
8.3.3響應(yīng)內(nèi)容
8.3.4超時(shí)、錯(cuò)誤與異常
8.4實(shí)用函數(shù)工具
8.4.1URL處理方法
8.4.2獲取字符串編碼
8.4.3獲取headers中的編碼
8.4.4獲取環(huán)境變量中的代理
8.4.5提取URL中的認(rèn)證信息
8.5requests的高級(jí)用法
8.5.1會(huì)話對(duì)象
8.5.2Cookie對(duì)象
8.5.3SSL校驗(yàn)
8.5.4代理請(qǐng)求
8.5.5文件上傳
8.5.6身份認(rèn)證
8.6案例: POST登錄與郵箱驗(yàn)證
8.6.1登錄請(qǐng)求流程分析
8.6.2用POST登錄獲取會(huì)話
第9章Selenium教程
9.1Selenium基礎(chǔ)
9.1.1關(guān)于Selenium
9.1.2Selenium及驅(qū)動(dòng)安裝
9.2瀏覽器的啟動(dòng)
9.2.1啟動(dòng)本地瀏覽器
9.2.2啟動(dòng)遠(yuǎn)程分布式瀏覽器
9.2.3啟動(dòng)項(xiàng)參數(shù)配置
9.3Selenium常用的API
9.3.1常用瀏覽器的操作接口
9.3.2元素對(duì)象WebElement
9.3.3鍵入操作與選擇操作
9.3.4行為鏈ActionChains
9.3.5頁面的Cookie處理
9.3.6內(nèi)嵌框處理
9.3.7JavaScript事件
9.3.8超時(shí)問題的處理
9.4Selenium的常用操作
9.4.1識(shí)別特征處理
9.4.2配置認(rèn)證代理
9.4.3響應(yīng)攔截操作
9.4.4控制安卓系統(tǒng)上的Chrome瀏覽器
9.5案例: Selenium登錄、滑動(dòng)驗(yàn)證、Session請(qǐng)求
9.5.1需求分析
9.5.2實(shí)現(xiàn)流程
9.5.3編碼實(shí)現(xiàn)
第10章多任務(wù)爬蟲開發(fā)
10.1多進(jìn)程
10.1.1Process類創(chuàng)建進(jìn)程
10.1.2Process子類創(chuàng)建進(jìn)程
10.1.3進(jìn)程池
10.1.4多進(jìn)程間通信
10.2多線程
10.2.1創(chuàng)建多線程
10.2.2鎖對(duì)象與死鎖
10.2.3全局解釋器鎖
10.3案例: 多線程圖片下載爬蟲
10.3.1案例分析
10.3.2編碼實(shí)現(xiàn)
附錄參考資源網(wǎng)址
查看全部↓
前言/序言
什么是網(wǎng)絡(luò)爬蟲
狹義的網(wǎng)絡(luò)爬蟲是指從互聯(lián)網(wǎng)網(wǎng)站上獲取信息的程序,如常用的搜索引擎——百度、360、搜狗等。同時(shí),網(wǎng)絡(luò)爬蟲也是一門復(fù)合型技術(shù),涉及的技術(shù)領(lǐng)域廣泛,如JavaScript、HTML、CSS、MySQL、Java等。廣義的爬蟲技術(shù)還包括自動(dòng)化。在這個(gè)概念下,網(wǎng)絡(luò)爬蟲不再只是從目標(biāo)網(wǎng)站獲取鏈接、圖片、文字等信息,甚至它們不再是為了獲取這些信息,而是為了完成某個(gè)特定任務(wù),如定時(shí)打卡、自動(dòng)統(tǒng)計(jì)、財(cái)務(wù)計(jì)算等。