前言
第1章 網絡爬蟲入門
1.1 為什麼要學網絡爬蟲
1.1.1 網絡爬蟲能帶來什麼好處
1.1.2 能從網絡上爬取什麼數據
1.1.3 應不應該學爬蟲
1.2 網絡爬蟲是否閤法
1.2.1 Robots協議
1.2.2 網絡爬蟲的約束
1.3 網絡爬蟲的基本議題
1.3.1 Python爬蟲的流程
1.3.2 三個流程的技術實現
第2章 編寫第一個網絡爬蟲
2.1 搭建Python平颱
2.1.1 Python的安裝
2.1.2 使用pip安裝第三方庫
2.1.3 使用編輯器Jupyter編程
2.1.4 使用編輯器Pycharm編程
2.2 Python使用入門
2.2.1 基本命令
2.2.2 數據類型
2.2.3 條件語句和循環語句
2.2.4 函數
2.2.5 麵嚮對象編程
2.2.6 錯誤處理
2.3 編寫第一個簡單的爬蟲
2.3.1 第一步:獲取頁麵
2.3.2 第二步:提取需要的數據
2.3.3 第三步:存儲數據
2.4 Python實踐:基礎鞏固
2.4.1 Python基礎試題
2.4.2 參考答案
2.4.3 自我實踐題
第3章 靜態網頁抓取
3.1 安裝Requests
3.2 獲取響應內容
3.3 定製Requests
3.3.1 傳遞URL參數
3.3.2 定製請求頭
3.3.3 發送POST請求
3.3.4 超時
3.4 Requests爬蟲實踐:TOP250電影數據
3.4.1 網站分析
3.4.2 項目實踐
3.4.3 自我實踐題
第4章 動態網頁抓取
4.1 動態抓取的實例
4.2 解析真實地址抓取
4.3 通過Selenium模擬瀏覽器抓取
4.3.1 Selenium的安裝與基本介紹
4.3.2 Selenium的實踐案例
4.3.3 Selenium獲取文章的所有評論
4.3.4 Selenium的高級操作
4.4 Selenium爬蟲實踐:深圳短租數據
4.4.1 網站分析
4.4.2 項目實踐
4.4.3 自我實踐題
第5章 解析網頁
5.1 使用正則錶達式解析網頁
5.1.1 re.match方法
5.1.2 re.search方法
5.1.3 re.findall方法
5.2 使用BeautifulSoup解析網頁
5.2.1 BeautifulSoup的安裝
5.2.2 使用BeautifulSoup獲取博客標題
5.2.3 BeautifulSoup的其他功能
5.3 使用lxml解析網頁
5.3.1 lxml的安裝
5.3.2 使用lxml獲取博客標題
5.3.3 XPath的選取方法
5.4 總結
5.5 BeautifulSoup爬蟲實踐:房屋價格數據
5.5.1 網站分析
5.5.2 項目實踐
5.5.3 自我實踐題
第6章 數據存儲
6.1 基本存儲:存儲至TXT或CSV
6.1.1 把數據存儲至TXT
6.1.2 把數據存儲至CSV
6.2 存儲至MySQL數據庫
6.2.1 下載安裝MySQL
6.2.2 MySQL的基本操作
6.2.3 Python操作MySQL數據庫
6.3 存儲至MongoDB數據庫
6.3.1 下載安裝MongoDB
6.3.2 MongoDB的基本概念
6.3.3 Python操作MongoDB數據庫
6.3.4 RoboMongo的安裝與使用
6.4 總結
6.5 MongoDB爬蟲實踐:虎撲論壇
6.5.1 網站分析
6.5.2 項目實踐
6.5.3 自我實踐題
第7章 Scrapy框架
7.1 Scrapy是什麼
7.1.1 Scrapy架構
7.1.2 Scrapy數據流(Data Flow)
7.1.3 選擇Scrapy還是Requests+bs4
7.2 安裝Scrapy
7.3 通過Scrapy抓取博客
7.3.1 創建一個Scrapy項目
7.3.2 獲取博客網頁並保存
7.3.3 提取博客標題和鏈接數據
7.3.4 存儲博客標題和鏈接數據
7.3.5 獲取文章內容
7.3.6 Scrapy的設置文件
7.4 Scrapy爬蟲實踐:財經新聞數據
7.4.1 網站分析
7.4.2 項目實踐
7.4.3 自我實踐題
第8章 提升爬蟲的速度
8.1 並發和並行,同步和異步
8.1.1 並發和並行
8.1.2 同步和異步
8.2 多綫程爬蟲
8.2.1 簡單的單綫程爬蟲
8.2.2 學習Python多綫程
8.2.3 簡單的多綫程爬蟲
8.2.4 使用Queue的多綫程爬蟲
8.3 多進程爬蟲
8.3.1 使用multiprocessing的多進程爬蟲
8.3.2 使用Pool+Queue的多進程爬蟲
8.4 多協程爬蟲
8.5 總結
第9章 反爬蟲問題
9.1 為什麼會被反爬蟲
9.2 反爬蟲的方式有哪些
9.2.1 不返迴網頁
9.2.2 返迴非目標網頁
9.2.3 獲取數據變難
9.3 如何“反反爬蟲”
9.3.1 修改請求頭
9.3.2 修改爬蟲的間隔時間
9.3.3 使用代理
9.3.4 更換IP地址
9.3.5 登錄獲取數據
9.4 總結
第10章 解決中文亂碼
10.1 什麼是字符編碼
10.2 Python的字符編碼
10.3 解決中文編碼問題
10.3.1 問題1:獲取網站的中文顯示亂碼
10.3.2 問題2:非法字符拋齣異常
10.3.3 問題3:網頁使用gzip壓縮
10.3.4 問題4:讀寫文件的中文亂碼
10.4 總結
第11章 登錄與驗證碼處理
11.1 處理登錄錶單
11.1.1 處理登錄錶單
11.1.2 處理cookies,讓網頁記住你的登錄
11.1.3 完整的登錄代碼
11.2 驗證碼的處理
11.2.1 如何使用驗證碼驗證
11.2.2 人工方法處理驗證碼
11.2.3 OCR處理驗證碼
11.3 總結
第12章 服務器采集
12.1 為什麼使用服務器采集
12.1.1 大規模爬蟲的需要
12.1.2 防止IP地址被封殺
12.2 使用動態IP撥號服務器
12.2.1 購買撥號服務器
12.2.2 登錄服務器
12.2.3 使用Python更換IP
12.2.4 結閤爬蟲和更換IP功能
12.3 使用Tor代理服務器
12.3.1 Tor的安裝
12.3.2 Tor的使用
第13章 分布式爬蟲
13.1 安裝Redis
13.2 修改Redis配置
13.2.1 修改Redis密碼
13.2.2 讓Redis服務器被遠程訪問
13.2.3 使用Redis Desktop Manager管理
13.3 Redis分布式爬蟲實踐
13.3.1 安裝Redis庫
13.3.2 加入任務隊列
13.3.3 讀取任務隊列並下載圖片
13.3.4 分布式爬蟲代碼
13.4 總結
第14章 爬蟲實踐一:維基百科
14.1 項目描述
14.1.1 項目目標
14.1.2 項目描述
14.1.3 深度優先和廣度優先
14.2 網站分析
14.3 項目實施:深度優先的遞歸爬蟲
14.4 項目進階:廣度優先的多綫程爬蟲
14.5 總結
第15章 爬蟲實踐二:知乎Live
15.1 項目描述
15.2 網站分析
15.3 項目實施
15.3.1 獲取所有Live
15.3.2 獲取Live的聽眾
15.4 總結
第16章 爬蟲實踐三:百度地圖API
16.1 項目描述
16.2 獲取API秘鑰
16.3 項目實施
16.3.1 獲取所有擁有公園的城市
16.3.2 獲取所有城市的公園數據
16.3.3 獲取所有公園的詳細信息
16.4 總結
第17章 爬蟲實踐四:暢銷書籍
17.1 項目描述
17.2 網站分析
17.3 項目實施
17.3.1 獲取亞馬遜的圖書銷售榜列錶
17.3.2 獲取所有分類的銷售榜
17.3.3 獲取圖書的評論
17.4 總結
· · · · · · (
收起)