Python網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)(第2版)
定 價(jià):79 元
叢書名:高等學(xué)校計(jì)算機(jī)基礎(chǔ)教育教材精選
- 作者:胡松濤
- 出版時(shí)間:2018/9/1
- ISBN:9787302510086
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP311.56
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書從Python 3.6.4的安裝開始,詳細(xì)講解了Python從簡單程序延伸到Python網(wǎng)絡(luò)爬蟲的全過程。本書從實(shí)戰(zhàn)出發(fā),根據(jù)不同的需求選取不同的爬蟲,有針對性地講解了幾種Python網(wǎng)絡(luò)爬蟲。
本書共10章,涵蓋的內(nèi)容有Python3.6語言的基本語法、Python常用IDE的使用、Python第三方模塊的導(dǎo)入使用、Python爬蟲常用模塊、Scrapy爬蟲、Beautiful Soup爬蟲、Mechanize模擬瀏覽器和Selenium模擬瀏覽器、Pyspider爬蟲框架、爬蟲與反爬蟲。本書所有源代碼已上傳網(wǎng)盤供讀者下載。
本書內(nèi)容豐富,實(shí)例典型,實(shí)用性強(qiáng)。適合Python網(wǎng)絡(luò)爬蟲初學(xué)者、Python數(shù)據(jù)分析與挖掘技術(shù)初學(xué)者,以及高等院校和培訓(xùn)學(xué)校相關(guān)專業(yè)的師生閱讀。
網(wǎng)絡(luò)爬蟲,又被稱為網(wǎng)頁蜘蛛、網(wǎng)絡(luò)機(jī)器人,是一種按照一定的規(guī)則,自動(dòng)地抓取互聯(lián)網(wǎng)信息的程序或者腳本。很多站點(diǎn),尤其是搜索引擎,都使用爬蟲(它主要用于提供訪問頁面的一個(gè)副本)提供*的數(shù)據(jù),然后,搜索引擎對得到的頁面進(jìn)行索引,以便快速訪問。爬蟲也可以用來在Web上自動(dòng)執(zhí)行一些任務(wù),例如檢查鏈接、確認(rèn)HTML代碼;還可以用來抓取網(wǎng)頁上某種特定類型的信息,例如電子郵件地址(通常用于垃圾郵件)。因此,網(wǎng)絡(luò)爬蟲技術(shù)對互聯(lián)網(wǎng)企業(yè)具有很大的應(yīng)用價(jià)值。
本書從Python 3.6.4*基礎(chǔ)的部分講起,延伸到Python*流行的應(yīng)用方向之一 網(wǎng)絡(luò)爬蟲,講解目前流行的幾種Python爬蟲框架,并給出詳細(xì)示例,以幫助讀者學(xué)習(xí)Python并開發(fā)出符合自己要求的網(wǎng)絡(luò)爬蟲。
前 言
計(jì)算機(jī)技術(shù)飛速發(fā)展,人們對計(jì)算機(jī)使用技能的要求也越來越高。在編寫軟件時(shí),大家既希望有超高的效率,又希望這門語言簡單易用。這種魚與熊掌皆得的要求的確很高,Python編程語言恰好符合這么苛刻的要求。
Python的執(zhí)行效率僅比效率之王C略差一籌,在簡單易用方面Python也名列三甲?梢哉fPython在效率和簡單之間達(dá)到了平衡。另外,Python還是一門膠水語言,可以將其他編程語言的優(yōu)點(diǎn)融合在一起,達(dá)到1 1>2的效果。這也是Python如今使用人數(shù)越來越多的原因。
Python語言發(fā)展迅速,在各行各業(yè)都發(fā)揮獨(dú)特的作用。在各大企業(yè)、學(xué)校、機(jī)關(guān)都運(yùn)行著Python明星程序。但就個(gè)人而言,運(yùn)用Python最多的還是網(wǎng)絡(luò)爬蟲(這里的爬蟲僅涉及從網(wǎng)頁提取數(shù)據(jù),不涉及深度、廣度算法爬蟲搜索)。在網(wǎng)絡(luò)上經(jīng)常更新的數(shù)據(jù),無須每次都打開網(wǎng)頁瀏覽,使用爬蟲程序,一鍵獲取數(shù)據(jù),下載保存后分析?紤]到Python爬蟲在網(wǎng)絡(luò)上的資料雖多,但大多都不成系統(tǒng),難以提供系統(tǒng)有效的學(xué)習(xí)。因此筆者拋磚引玉,編寫了這本有關(guān)Python網(wǎng)絡(luò)爬蟲的書,以供讀者學(xué)習(xí)參考。
Python簡單易學(xué),Python爬蟲也不復(fù)雜。只需要了解了Python的基本操作即可自行編寫。本書中介紹了幾種不同類型的Python爬蟲,可以針對不同情況的站點(diǎn)進(jìn)行數(shù)據(jù)收集。
本書特色
? 附帶全部源代碼。為了便于讀者理解本書內(nèi)容,作者已將全部的源代碼上傳到網(wǎng)絡(luò),供讀者下載使用。讀者通過代碼學(xué)習(xí)開發(fā)思路,精簡優(yōu)化代碼。
? 涵蓋了Linux&Windows上模塊的安裝配置。本書包含了Python模塊源的配置、模塊的安裝,以及常用IDE的使用。
? 實(shí)戰(zhàn)實(shí)例。通過常用的實(shí)例,詳細(xì)說明網(wǎng)絡(luò)爬蟲的編寫過程。
本書內(nèi)容
本書共10章,前面4章簡單地介紹了Python 3.6的基本用法和簡單Python程序的編寫。第5章的Scrapy爬蟲框架主要針對一般無須登錄的網(wǎng)站,在爬取大量數(shù)據(jù)時(shí)使用Scrapy會(huì)很方便。第6章的Beautiful Soup爬蟲可以算作爬蟲的個(gè)人版。Beautiful Soup爬蟲主要針對一些爬取數(shù)據(jù)比較少的,結(jié)構(gòu)簡單的網(wǎng)站。第7章的Mechanize模塊,主要功能是模擬瀏覽器。它的作用主要是針對那些需要登錄驗(yàn)證的網(wǎng)站。第8章的Selenium模塊,主要功能也是模擬瀏覽器,它的作用主要是針對JavaScript返回?cái)?shù)據(jù)的網(wǎng)站。第9章的Pyspider是由國人自產(chǎn)的爬蟲框架。Pyspider框架獨(dú)具一格的Web接口讓爬蟲的使用更加簡單。第10章簡單介紹了反爬蟲技術(shù),使讀者編寫的爬蟲可以繞過簡單的反爬蟲技術(shù)更加靈活地獲取數(shù)據(jù)。
本書用于Python 3編程與Python 3網(wǎng)絡(luò)爬蟲快速入門。另外,為了讓讀者多了解幾個(gè)爬蟲框架,本書也介紹了Python 2.7下運(yùn)行的Mechanize與Pyspider工具。
修訂說明
本書第1版使用了Python 2.7,由于Python 2未來不再被官方支持,今后Python將逐漸轉(zhuǎn)換到Python 3版本。Python 3基本上可以與Python 2兼容,但細(xì)節(jié)方面略有差異,比如某些模塊的名稱(Python2中的urllib2在Python 3中變成了urllib.request)。本次修訂將所有支持Python 3的爬蟲全部轉(zhuǎn)換成了Python 3的版本,更加符合主流。目前暫時(shí)不支持Python 3、只支持Python 2的爬蟲(Mechanize與Pyspider)也修訂了代碼,改正了一些因?yàn)槟繕?biāo)網(wǎng)站改版而造成爬蟲不能使用的問題。
源代碼下載
本書源代碼下載地址請掃描右邊二維碼。如果下載有問題,或者對本書有
任何疑問與建議,請聯(lián)系booksaga@163.com,郵件主題為Python網(wǎng)絡(luò)爬蟲。
本書讀者與作者
? Python編程及Python網(wǎng)絡(luò)爬蟲初學(xué)者
? 數(shù)據(jù)分析與挖掘技術(shù)初學(xué)者
? 高等院校和培訓(xùn)學(xué)校相關(guān)專業(yè)的師生
本書由胡松濤主筆,其他參與創(chuàng)作的還有王立平、劉祥淼、王啟明、樊愛宛、張倩、曹卉、林江閩、王鐵民、殷龍、李春城、趙東、李玉莉、李柯泉、李雷霆。
著 者
2018年8月
胡松濤,高級(jí)工程師,參與多個(gè)Linux開源項(xiàng)目,github知名代碼分享者,活躍于國內(nèi)著名的多個(gè)開源論壇。
目 錄
第1章 Python環(huán)境配置 1
1.1 Python簡介 1
1.1.1 Python的歷史由來 1
1.1.2 Python的現(xiàn)狀 2
1.1.3 Python的應(yīng)用 2
1.2 Python 3.6.4開發(fā)環(huán)境配置 4
1.2.1 Windows下安裝Python 4
1.2.2 Windows下安裝配置pip 9
1.2.3 Linux下安裝Python 10
1.2.4 Linux下安裝配置pip 13
1.2.5 永遠(yuǎn)的hello world 16
1.3 本章小結(jié) 21
第2章 Python基礎(chǔ) 22
2.1 Python變量類型 22
2.1.1 數(shù)字 22
2.1.2 字符串 25
2.1.3 列表 29
2.1.4 元組 34
2.1.5 字典 37
2.2 Python語句 41
2.2.1 條件語句if else 41
2.2.2 有限循環(huán)for 42
2.2.3 無限循環(huán)while 44
2.2.4 中斷循環(huán)continue、break 46
2.2.5 異常處理try except 48
2.2.6 導(dǎo)入模塊import 52
2.3 函數(shù)和類 56
2.3.1 函數(shù) 56
2.3.2 類 62
2.4 Python內(nèi)置函數(shù) 68
2.4.1 常用內(nèi)置函數(shù) 68
2.4.2 高級(jí)內(nèi)置函數(shù) 69
2.5 Python代碼格式 74
2.5.1 Python代碼縮進(jìn) 74
2.5.2 Python命名規(guī)則 75
2.5.3 Python代碼注釋 76
2.6 Python調(diào)試 79
2.6.1 Windows下IDLE調(diào)試 79
2.6.2 Linux下pdb調(diào)試 82
2.7 本章小結(jié) 87
第3章 簡單的Python腳本 88
3.1 九九乘法表 88
3.1.1 Project分析 88
3.1.2 Project實(shí)施 88
3.2 斐波那契數(shù)列 90
3.2.1 Project分析 90
3.2.2 Project實(shí)施 90
3.3 概率計(jì)算 91
3.3.1 Project分析 91
3.3.2 Project實(shí)施 92
3.4 讀寫文件 93
3.4.1 Project分析 93
3.4.2 Project實(shí)施 94
3.5 類的繼承與重載 96
3.5.1 Project 1分析 96
3.5.2 Project 1實(shí)施 98
3.5.3 Project 2分析 100
3.5.4 Project 2實(shí)施 101
3.6 多線程 107
3.6.1 Project 1分析 107
3.6.2 Project 1實(shí)施 109
3.6.3 Project 2分析 112
3.6.4 Project 2實(shí)施 115
3.7 本章小結(jié) 117
第4章 Python爬蟲常用模塊 118
4.1 網(wǎng)絡(luò)爬蟲技術(shù)核心 118
4.1.1 網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)原理 118
4.1.2 爬行策略 119
4.1.3 身份識(shí)別 119
4.2 Python 3標(biāo)準(zhǔn)庫之urllib.request模塊 120
4.2.1 urllib.request請求返回網(wǎng)頁 120
4.2.2 urllib.request使用代理訪問網(wǎng)頁 122
4.2.3 urllib.request修改header 125
4.3 Python 3標(biāo)準(zhǔn)庫之logging模塊 129
4.3.1 簡述logging模塊 129
4.3.2 自定義模塊myLog 133
4.4 re模塊(正則表達(dá)式) 135
4.4.1 re模塊(正則表達(dá)式操作) 136
4.4.2 re模塊實(shí)戰(zhàn) 137
4.5 其他有用模塊 139
4.5.1 sys模塊(系統(tǒng)參數(shù)獲。 139
4.5.2 time模塊(獲取時(shí)間信息) 141
4.6 本章小結(jié) 144
第5章 Scrapy爬蟲框架 145
5.1 安裝Scrapy 145
5.1.1 Windows下安裝Scrapy環(huán)境 145
5.1.2 Linux下安裝Scrapy 146
5.1.3 vim編輯器 147
5.2 Scrapy選擇器XPath和CSS 148
5.2.1 XPath選擇器 148
5.2.2 CSS選擇器 151
5.2.3 其他選擇器 152
5.3 Scrapy爬蟲實(shí)戰(zhàn)一:今日影視 153
5.3.1 創(chuàng)建Scrapy項(xiàng)目 153
5.3.2 Scrapy文件介紹 155
5.3.3 Scrapy爬蟲編寫 157
5.4 Scrapy爬蟲實(shí)戰(zhàn)二:天氣預(yù)報(bào) 164
5.4.1 項(xiàng)目準(zhǔn)備 165
5.4.2 創(chuàng)建編輯Scrapy爬蟲 166
5.4.3 數(shù)據(jù)存儲(chǔ)到j(luò)son 173
5.4.4 數(shù)據(jù)存儲(chǔ)到MySQL 175
5.5 Scrapy爬蟲實(shí)戰(zhàn)三:獲取代理 182
5.5.1 項(xiàng)目準(zhǔn)備 182
5.5.2 創(chuàng)建編輯Scrapy爬蟲 183
5.5.3 多個(gè)Spider 188
5.5.4 處理Spider數(shù)據(jù) 192
5.6 Scrapy爬蟲實(shí)戰(zhàn)四:糗事百科 194
5.6.1 目標(biāo)分析 195
5.6.2 創(chuàng)建編輯Scrapy爬蟲 195
5.6.3 Scrapy項(xiàng)目中間件添加headers 196
5.6.4 Scrapy項(xiàng)目中間件添加proxy 200
5.7 Scrapy爬蟲實(shí)戰(zhàn)五:爬蟲攻防 202
5.7.1 創(chuàng)建一般爬蟲 202
5.7.2 封鎖間隔時(shí)間破解 206
5.7.3 封鎖Cookies破解 206
5.7.4 封鎖User-Agent破解 207
5.7.5 封鎖IP破解 212
5.8 本章小結(jié) 215
第6章 Beautiful Soup爬蟲 216
6.1 安裝Beautiful Soup環(huán)境 216
6.1.1 Windows下安裝Beautiful Soup 216
6.1.2 Linux下安裝Beautiful Soup 217
6.1.3 最強(qiáng)大的IDEEclipse 218
6.2 Beautiful Soup解析器 227
6.2.1 bs4解析器選擇 227
6.2.2 lxml解析器安裝 227
6.2.3 使用bs4過濾器 229
6.3 bs4爬蟲實(shí)戰(zhàn)一:獲取百度貼吧內(nèi)容 234
6.3.1 目標(biāo)分析 234
6.3.2 項(xiàng)目實(shí)施 236
6.3.3 代碼分析 243
6.3.4 Eclipse調(diào)試 244
6.4 bs4爬蟲實(shí)戰(zhàn)二:獲取雙色球中獎(jiǎng)信息 245
6.4.1 目標(biāo)分析 246
6.4.2 項(xiàng)目實(shí)施 248
6.4.3 保存結(jié)果到Excel 251
6.4.4 代碼分析 256
6.5 bs4爬蟲實(shí)戰(zhàn)三:獲取起點(diǎn)小說信息 257
6.5.1 目標(biāo)分析 257
6.5.2 項(xiàng)目實(shí)施 259
6.5.3 保存結(jié)果到MySQL 261
6.5.4 代碼分析 265
6.6 bs4爬蟲實(shí)戰(zhàn)四:獲取電影信息 266
6.6.1 目標(biāo)分析 266
6.6.2 項(xiàng)目實(shí)施 267
6.6.3 bs4反爬蟲 270
6.6.4 代碼分析 273
6.7 bs4爬蟲實(shí)戰(zhàn)五:獲取音悅臺(tái)榜單 273
6.7.1 目標(biāo)分析 273
6.7.2 項(xiàng)目實(shí)施 274
6.7.3 代碼分析 279
6.8 本章小結(jié) 280
第7章 Mechanize模擬瀏覽器 281
7.1 安裝Mechanize模塊 281
7.1.1 Windows下安裝Mechanize 281
7.1.2 Linux下安裝Mechanize 282
7.2 Mechanize 測試 283
7.2.1 Mechanize百度 283
7.2.2 Mechanize光貓F(tuán)460 286
7.3 Mechanize實(shí)站一:獲取Modem信息 290
7.3.1 獲取F460數(shù)據(jù) 290
7.3.2 代碼分析 293
7.4 Mechanize實(shí)戰(zhàn)二:獲取音悅臺(tái)公告 293
7.4.1 登錄原理 293
7.4.2 獲取Cookie的方法 294
7.4.3 獲取Cookie 298
7.4.4 使用Cookie登錄獲取數(shù)據(jù) 302
7.5 本章小結(jié) 305
第8章 Selenium模擬瀏覽器 306
8.1 安裝Selenium模塊 306
8.1.1 Windows下安裝Selenium模塊 306
8.1.2 Linux下安裝Selenium模塊 307
8.2 瀏覽器選擇 307
8.2.1 Webdriver支持列表 307
8.2.2 Windows下安裝PhantomJS 308
8.2.3 Linux下安裝PhantomJS 310
8.3 Selenium&PhantomJS抓取數(shù)據(jù) 312
8.3.1 獲取百度搜索結(jié)果 312
8.3.2 獲取搜索結(jié)果 314
8.3.3 獲取有效數(shù)據(jù)位置 317
8.3.4 從位置中獲取有效數(shù)據(jù) 319
8.4 Selenium&PhantomJS實(shí)戰(zhàn)一:獲取代理 319
8.4.1 準(zhǔn)備環(huán)境 320
8.4.2 爬蟲代碼 321
8.4.3 代碼解釋 324
8.5 Selenium&PhantomJS實(shí)戰(zhàn)二:漫畫爬蟲 324
8.5.1 準(zhǔn)備環(huán)境 325
8.5.2 爬蟲代碼 326
8.5.3 代碼解釋 329
8.6 本章小結(jié) 329
第9章 Pyspider爬蟲框架 330
9.1 安裝Pyspider 330
9.1.1 Windows下安裝Pyspider 330
9.1.2 Linux下安裝Pyspider 331
9.1.3 選擇器pyquery測試 333
9.2 Pyspider實(shí)戰(zhàn)一:Youku影視排行 335
9.2.1 創(chuàng)建項(xiàng)目 336
9.2.2 爬蟲編寫 338
9.3 Pyspider實(shí)戰(zhàn)二:電影下載 346
9.3.1 項(xiàng)目分析 346
9.3.2 爬蟲編寫 349
9.3.3 爬蟲運(yùn)行、調(diào)試 355
9.3.4 刪除項(xiàng)目 360
9.4 Pyspider實(shí)戰(zhàn)三:音悅臺(tái)MusicTop 363
9.4.1 項(xiàng)目分析 363
9.4.2 爬蟲編寫 364
9.5 本章小結(jié) 369
第10章 爬蟲與反爬蟲 370
10.1 防止爬蟲IP被禁 370
10.1.1 反爬蟲在行動(dòng) 370
10.1.2 爬蟲的應(yīng)對 373
10.2 在爬蟲中使用Cookies 377
10.2.1 通過Cookies反爬蟲 377
10.2.2 帶Cookies的爬蟲 378
10.2.3 動(dòng)態(tài)加載反爬蟲 381
10.2.4 使用瀏覽器獲取數(shù)據(jù) 381
10.3 本章小結(jié) 381