Python網(wǎng)絡(luò)爬蟲(chóng)實(shí)例教程(視頻講解版)
本書(shū)主要內(nèi)容包括:網(wǎng)絡(luò)爬蟲(chóng)概述、 requests庫(kù)入門、xapth語(yǔ)法詳解、認(rèn)識(shí)和應(yīng)對(duì)反爬蟲(chóng)、模擬登錄和驗(yàn)證碼的處理、動(dòng)態(tài)頁(yè)面的分析方法、scrapy框架基礎(chǔ)、 應(yīng)對(duì)反爬蟲(chóng)策略、scrapy數(shù)據(jù)存儲(chǔ)、提交數(shù)據(jù)和保持登錄、crawlspider模板、圖片下載和文件下載、分布式爬蟲(chóng)、增量式爬蟲(chóng)、
1. 零基礎(chǔ)入門Python網(wǎng)絡(luò)爬蟲(chóng)。
2. 提供全套視頻講解爬蟲(chóng)技術(shù)。
3. 使用爬取鏈家網(wǎng)、豆瓣網(wǎng)、Q房網(wǎng)、拉勾網(wǎng)、新浪微博、我愛(ài)我家、房天下、知乎等多個(gè)實(shí)用案例。
齊文光 原中國(guó)網(wǎng)通山東分公司數(shù)據(jù)中心工程師 愛(ài)好python編程,善于編寫(xiě)爬蟲(chóng)和利用python進(jìn)行數(shù)據(jù)分析和可視化,對(duì)于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)也有深入研究。
第1章 網(wǎng)絡(luò)爬蟲(chóng)概述 1
1.1 認(rèn)識(shí)網(wǎng)絡(luò)爬蟲(chóng) 1
1.1.1 網(wǎng)絡(luò)爬蟲(chóng)的含義 1
1.1.2 網(wǎng)絡(luò)爬蟲(chóng)的主要類型 2
1.1.3 簡(jiǎn)單網(wǎng)絡(luò)爬蟲(chóng)的架構(gòu) 3
1.1.4 網(wǎng)絡(luò)爬蟲(chóng)的應(yīng)用場(chǎng)景 3
1.2 Python網(wǎng)絡(luò)爬蟲(chóng)技術(shù)概況 4
1.2.1 Python中實(shí)現(xiàn)HTTP請(qǐng)求 4
1.2.2 Python中實(shí)現(xiàn)網(wǎng)頁(yè)解析 5
1.2.3 Python爬蟲(chóng)框架 6
1.3 搭建開(kāi)發(fā)環(huán)境 7
1.3.1 代碼運(yùn)行環(huán)境 7
1.3.2 開(kāi)發(fā)編輯器 8
1.4 本章小結(jié)及要求 11
第2章 爬蟲(chóng)基礎(chǔ) 12
2.1 認(rèn)識(shí)HTTP請(qǐng)求 12
2.1.1 HTTP請(qǐng)求的含義 12
2.1.2 HTTP請(qǐng)求信息 12
2.2 爬蟲(chóng)基礎(chǔ)Requests庫(kù)入門 15
2.2.1 Requests庫(kù)的安裝 15
2.2.2 Requests庫(kù)的請(qǐng)求方法 16
2.2.3 Requests庫(kù)的響應(yīng)對(duì)象 17
2.2.4 響應(yīng)狀態(tài)碼 17
2.2.5 定制請(qǐng)求頭部 18
2.2.6 重定向與超時(shí) 18
2.2.7 傳遞URL參數(shù) 19
2.3 爬蟲(chóng)基礎(chǔ)Urllib庫(kù)基礎(chǔ) 20
2.3.1 Urllib 庫(kù)簡(jiǎn)介 20
2.3.2 發(fā)送GET請(qǐng)求 20
2.3.3 模擬瀏覽器發(fā)送GET
請(qǐng)求 21
2.3.4 POST發(fā)送一個(gè)請(qǐng)求 22
2.3.5 URL解析 23
2.4 本章小結(jié)及要求 24
第3章 網(wǎng)頁(yè)解析基礎(chǔ) 25
3.1 網(wǎng)頁(yè)解析概述 25
3.1.1 常用網(wǎng)頁(yè)解析工具 25
3.1.2 HTML源碼簡(jiǎn)介 25
3.2 XPath語(yǔ)法基礎(chǔ) 27
3.2.1 Lxml庫(kù)的安裝 27
3.2.2 XPath語(yǔ)法基礎(chǔ)
通過(guò)路徑查找元素 28
3.2.3 通過(guò)屬性查找元素 30
3.2.4 提取屬性值 31
3.2.5 XPath的高級(jí)用法 31
3.3 抓取百度首頁(yè)實(shí)例 33
3.4 Beautiful Soup庫(kù)和正則表達(dá)式 37
3.4.1 Beautiful Soup簡(jiǎn)介 38
3.4.2 Beautiful Soup基本用法 39
3.4.3 Beautiful Soup標(biāo)準(zhǔn)選擇器 40
3.4.4 正則表達(dá)式 41
3.5 本章小結(jié)及要求 45
第4章 基礎(chǔ)爬蟲(chóng)實(shí)例 46
4.1 Q房網(wǎng)爬蟲(chóng)實(shí)例 46
4.1.1 網(wǎng)站頁(yè)面分析 46
4.1.2 編寫(xiě)Q房網(wǎng)二手房房源爬蟲(chóng)
代碼 47
4.1.3 保存爬取到的信息 50
4.2 多層頁(yè)面的爬取 51
4.2.1 爬取詳情頁(yè)面分析 51
4.2.2 編寫(xiě)爬取詳情頁(yè)面的代碼 52
4.3 下載房源圖片和實(shí)現(xiàn)多線程
爬蟲(chóng) 55
4.3.1 下載房源圖片 55
4.3.2 實(shí)現(xiàn)簡(jiǎn)單多線程爬蟲(chóng) 56
4.4 本章小結(jié)及要求 59
第5章 Requests模擬登錄 60
5.1 使用Cookies登錄網(wǎng)站 60
5.1.1 網(wǎng)站的保持登錄機(jī)制 60
5.1.2 登錄豆瓣網(wǎng)站 61
5.2 模擬登錄網(wǎng)站 63
5.2.1 豆瓣網(wǎng)站的登錄分析 63
5.2.2 Requests會(huì)話對(duì)象 66
5.2.3 編寫(xiě)Requests登錄豆瓣
網(wǎng)站的代碼 67
5.3 驗(yàn)證碼的處理 68
5.3.1 帶驗(yàn)證碼的網(wǎng)站登錄分析 68
5.3.2 驗(yàn)證碼的識(shí)別和處理 70
5.3.3 編寫(xiě)帶驗(yàn)證碼的豆瓣網(wǎng)站
登錄代碼 71
5.4 本章小結(jié)及要求 73
第6章 認(rèn)識(shí)和應(yīng)對(duì)反爬蟲(chóng) 74
6.1 常用的網(wǎng)站反爬蟲(chóng)策略及應(yīng)對(duì)
措施 74
6.1.1 常用的網(wǎng)站反爬蟲(chóng)策略 74
6.1.2 應(yīng)對(duì)網(wǎng)站反爬蟲(chóng)的措施 75
6.2 使用IP代理的方法 76
6.2.1 Requests中使用代理IP 76
6.2.2 獲取免費(fèi)代理IP 77
6.3 使用IP代理爬取微信文章 78
6.3.1 分析微信文章的搜索頁(yè)面
及其URL的構(gòu)造特點(diǎn) 78
6.3.2 編寫(xiě)爬蟲(chóng)代碼 80
6.4 本章小結(jié)及要求 82
第7章 動(dòng)態(tài)網(wǎng)頁(yè)的抓取 84
7.1 動(dòng)態(tài)網(wǎng)頁(yè)及其爬取方法 84
7.1.1 動(dòng)態(tài)網(wǎng)頁(yè)的含義 84
7.1.2 動(dòng)態(tài)網(wǎng)頁(yè)的爬取辦法 85
7.2 動(dòng)態(tài)網(wǎng)頁(yè)的爬取技巧 86
7.2.1 鏈家經(jīng)紀(jì)人頁(yè)面分析 86
7.2.2 鏈家經(jīng)紀(jì)人爬蟲(chóng)實(shí)現(xiàn) 88
7.3 Selenium庫(kù)的安裝與使用 90
7.3.1 Selenium庫(kù)的安裝 90
7.3.2 chromedriver的安裝和使用 91
7.3.3 Selenium的簡(jiǎn)單使用 92
7.4 爬取新浪微博網(wǎng)站 95
7.4.1 新浪微博網(wǎng)站爬取分析 95
7.4.2 新浪微博網(wǎng)站爬蟲(chóng)實(shí)現(xiàn) 95
7.4.3 爬蟲(chóng)的簡(jiǎn)單去重 98
7.4.4 使用Chrome瀏覽器的
headless模式 100
7.5 本章小結(jié)及要求 101
第8章 動(dòng)態(tài)網(wǎng)頁(yè)與應(yīng)對(duì)反爬蟲(chóng)
綜合實(shí)例 102
8.1 拉勾網(wǎng)網(wǎng)站分析 102
8.1.1 拉勾網(wǎng)網(wǎng)站頁(yè)面初步分析 102
8.1.2 解析json數(shù)據(jù)和招聘崗位
詳情頁(yè)分析 105
8.2 拉勾網(wǎng)爬蟲(chóng)實(shí)現(xiàn) 107
8.2.1 拉勾網(wǎng)爬蟲(chóng)的初步實(shí)現(xiàn) 107
8.2.2 拉勾網(wǎng)爬蟲(chóng)的進(jìn)一步
完善 109
8.3 探索拉勾網(wǎng)反爬蟲(chóng)機(jī)制 110
8.4 本章小結(jié)及要求 113
第9章 Scrapy爬蟲(chóng)框架基礎(chǔ) 114
9.1 Scrapy爬蟲(chóng)框架簡(jiǎn)介與安裝 114
9.1.1 Scrapy爬蟲(chóng)框架簡(jiǎn)介 114
9.1.2 Scrapy爬蟲(chóng)框架的安裝 114
9.2 Scrapy目錄結(jié)構(gòu)和簡(jiǎn)單爬蟲(chóng)
實(shí)例 116
9.2.1 Scrapy目錄結(jié)構(gòu) 116
9.2.2 百度爬蟲(chóng)實(shí)現(xiàn) 119
9.2.3 Scrapy選擇器 120
9.3 Scrapy命令行工具、選擇器、
數(shù)據(jù)容器 122
9.3.1 Scrapy常用命令行工具 122
9.3.2 Scrapy選擇器高級(jí)應(yīng)用 124
9.3.3 Scrapy數(shù)據(jù)容器 125
9.4 本章小結(jié)及要求 126
第10章 BasicSpider類和
圖片下載 127
10.1 BasicSpider類 127
10.1.1 Scrapy的爬蟲(chóng)類和模板 127
10.1.2 BasicSpider類簡(jiǎn)介 128
10.2 爬取我愛(ài)我家二手房房源
數(shù)據(jù) 129
10.2.1 我愛(ài)我家網(wǎng)站分析 129
10.2.2 我愛(ài)我家爬蟲(chóng)項(xiàng)目實(shí)現(xiàn) 131
10.2.3 數(shù)據(jù)的快捷輸出 133
10.3 圖片下載和翻頁(yè)的另一種
方法 134
10.3.1 Scrapy圖片下載簡(jiǎn)介 134
10.3.2 我愛(ài)我家房源圖片下載 134
10.3.3 翻頁(yè)的另一種方法 135
10.4 本章小結(jié)及要求 137
第11章 CrawlSpider類和Scrapy
框架概覽 138
11.1 CrawlSpider類簡(jiǎn)介 138
11.2 房天下二手房房源爬蟲(chóng) 139
11.2.1 房天下網(wǎng)站分析 139
11.2.2 房天下二手房房源爬蟲(chóng)
實(shí)現(xiàn) 140
11.3 Scrapy架構(gòu) 143
11.3.1 Scrapy架構(gòu)概覽 143
11.3.2 Scrapy中的數(shù)據(jù)流 144
11.4 本章小結(jié)及要求 145
第12章 Scrapy應(yīng)對(duì)反爬蟲(chóng)
策略 146
12.1 常用的反爬蟲(chóng)設(shè)置 146
12.2 下載器中間件 148
12.2.1 下載器中間件簡(jiǎn)介 148
12.2.2 激活下載器中間件 149
12.2.3 編寫(xiě)下載器中間件 150
12.3 設(shè)置隨機(jī)用戶代理和IP代理 150
12.3.1 設(shè)置隨機(jī)用戶代理 150
12.3.2 設(shè)置隨機(jī)IP代理 152
12.4 本章小結(jié)及要求 153
第13章 登錄網(wǎng)站和提交數(shù)據(jù) 154
13.1 Cookies登錄網(wǎng)站的高級(jí)技巧 154
13.1.1 Request對(duì)象 154
13.1.2 利用Cookies登錄網(wǎng)站的
技巧 155
13.2 使用FormRequest向網(wǎng)站提交
數(shù)據(jù) 157
13.2.1 FormRequest類 157
13.2.2 爬取Q房網(wǎng)二手房房源 158
13.3 Scrapy登錄網(wǎng)站的高級(jí)技巧 159
13.3.1 FormRequest.from_response()
方法 159
13.3.2 利用Scrapy登錄網(wǎng)站的
技巧 160
13.4 本章小結(jié)及要求 161
第14章 存儲(chǔ)數(shù)據(jù)到數(shù)據(jù)庫(kù) 162
14.1 MongoDB的安裝與使用 162
14.1.1 Scrapy存儲(chǔ)數(shù)據(jù)與
MongoDB簡(jiǎn)介 162
14.1.2 MongoDB的安裝 162
14.1.3 MongoDB的配置與啟動(dòng) 163
14.1.4 MongoDB的可視化管理 164
14.2 爬取鏈家經(jīng)紀(jì)人成交數(shù)據(jù) 165
14.2.1 鏈家移動(dòng)頁(yè)面分析 165
14.2.2 定義Items、編寫(xiě)spider 168
14.3 設(shè)置鏈家網(wǎng)爬蟲(chóng)pipeline 171
14.3.1 在Python中操作
MongoDB 171
14.3.2 配置pipeline 174
14.3.3 在settings中啟用pipeline 175
14.4 存儲(chǔ)數(shù)據(jù)到MySQL 175
14.4.1 使用pymysql操作MySQL
數(shù)據(jù)庫(kù) 175
14.4.2 把鏈家經(jīng)紀(jì)人成交數(shù)據(jù)存儲(chǔ)
到MySQL數(shù)據(jù)庫(kù) 176
14.5 本章小結(jié)及要求 177
第15章 分布式爬蟲(chóng)與爬蟲(chóng)部署 178
15.1 分布式爬蟲(chóng)原理與Redis的
安裝 178
15.1.1 Scrapy分布式爬蟲(chóng)原理 178
15.1.2 Redis的安裝 179
15.2 scrapy_redis實(shí)現(xiàn)分布式爬蟲(chóng) 181
15.2.1 scrapy_redis庫(kù) 181
15.2.2 分布式爬蟲(chóng)的部署和存儲(chǔ) 182
15.3 使用Scrapyd部署爬蟲(chóng) 183
15.3.1 Scrapyd簡(jiǎn)介和安裝 183
15.3.2 使用scrapyd-client部署
爬蟲(chóng) 185
15.4 Scrapy爬蟲(chóng)去重 187
15.4.1 Scrapy去重方案 187
15.4.2 Bloom Filter過(guò)濾 188
15.5 本章小結(jié)及要求 189
第16章 項(xiàng)目實(shí)戰(zhàn)知乎用戶
爬蟲(chóng)及數(shù)據(jù)分析 190
16.1 知乎用戶爬蟲(chóng)知乎網(wǎng)站
分析 190
16.1.1 知乎網(wǎng)站初步分析 190
16.1.2 知乎網(wǎng)站進(jìn)一步分析 192
16.2 知乎爬蟲(chóng)的實(shí)現(xiàn) 194
16.2.1 編寫(xiě)知乎爬蟲(chóng)代碼 194
16.2.2 使用MongoDB和scrapy_redis
搭建分布式爬蟲(chóng) 196
16.3 爬蟲(chóng)數(shù)據(jù)分析 197
16.3.1 爬蟲(chóng)數(shù)據(jù)分析工具 197
16.3.2 知乎用戶數(shù)據(jù)加載 199
16.3.3 爬蟲(chóng)數(shù)據(jù)簡(jiǎn)單分析 200
16.4 本章小結(jié)及要求 206