前言
自從20世紀(jì)80年代末Python語(yǔ)言誕生至今,它已被廣泛應(yīng)用于處理系統(tǒng)管理任務(wù)和科學(xué)計(jì)算等領(lǐng)域,是頗受歡迎的程序設(shè)計(jì)語(yǔ)言。
因?yàn)镻ython 的語(yǔ)法簡(jiǎn)潔易讀,讓眾多編程入門(mén)者不再望而卻步,所以各行各業(yè)的技術(shù)人員都開(kāi)始將其
用于Web開(kāi)發(fā)、爬蟲(chóng)、數(shù)據(jù)清洗、自然語(yǔ)言處理、機(jī)器學(xué)習(xí)和人工智能等方面。其中,網(wǎng)絡(luò)爬蟲(chóng)所需的獲取、存儲(chǔ)、整理等流程都可以使用Python系統(tǒng)地實(shí)現(xiàn),相信讀者一定會(huì)把Python語(yǔ)言作為實(shí)現(xiàn)爬蟲(chóng)的主要技術(shù)。
本書(shū)適合Python零基礎(chǔ)的讀者開(kāi)發(fā)爬蟲(chóng)項(xiàng)目,全書(shū)共13章內(nèi)容。第1章是Python基礎(chǔ)入門(mén),主要講解Python的基礎(chǔ)語(yǔ)法和面向?qū)ο缶幊袒A(chǔ)、圖形界面設(shè)計(jì)、文件使用、Python的第三方庫(kù)等知識(shí),讀者可以輕松掌握Python基礎(chǔ)知識(shí)。已經(jīng)學(xué)過(guò)Python的讀者可以直接從第2章開(kāi)始學(xué)習(xí)。
第2章和第3章是爬蟲(chóng)技術(shù)所必備的HTML基礎(chǔ)知識(shí)和網(wǎng)絡(luò)通信基礎(chǔ)知識(shí)。從第4章開(kāi)始是實(shí)用爬蟲(chóng)項(xiàng)目案例開(kāi)發(fā),綜合應(yīng)用前面的基礎(chǔ)技術(shù),并且每章都有新的爬蟲(chóng)技術(shù),如側(cè)重API獲取數(shù)據(jù)的“小小翻譯器”、應(yīng)用動(dòng)態(tài)網(wǎng)頁(yè)爬蟲(chóng)技術(shù)開(kāi)發(fā)的案例“抓取百度圖片”“爬取今日頭條新聞”、應(yīng)用中文分詞技術(shù)的“校園網(wǎng)搜索引擎”、應(yīng)用Selenium操作瀏覽器的“模擬登錄豆瓣網(wǎng)站”等案例。另外,第12章還介紹了Scrapy框架爬蟲(chóng),可以輕松實(shí)現(xiàn)強(qiáng)大的爬蟲(chóng)功能。
本書(shū)具有以下特點(diǎn):
(1) Python爬蟲(chóng)設(shè)計(jì)涉及的范圍非常廣泛,本書(shū)內(nèi)容編排并不求全、求深,而是考慮零基礎(chǔ)讀者的接受能力,對(duì)Python語(yǔ)言語(yǔ)法介紹以夠用、實(shí)用和應(yīng)用為原則,選擇Python 中必備、實(shí)用的知識(shí)進(jìn)行講解。
(2) 選取的爬蟲(chóng)案例貼近生活,有助于提高學(xué)習(xí)興趣。
(3) 每個(gè)爬蟲(chóng)案例均提供詳細(xì)的設(shè)計(jì)思路、關(guān)鍵技術(shù)分析及具體的解決方案。
本書(shū)配套資源豐富,包括教學(xué)大綱、教學(xué)課件、電子教案、程序源碼、教學(xué)進(jìn)度表; 本書(shū)還配有650分鐘的微課視頻。
資源下載提示
課件等資源: 掃描封底的“課件下載”二維碼,在公眾號(hào)“書(shū)圈”下載。
素材(源碼)等資源: 掃描目錄上方的二維碼下載。
視頻等資源: 掃描封底刮刮卡中的二維碼,再掃描書(shū)中相應(yīng)章節(jié)中的二維碼,可以在線學(xué)習(xí)。
本書(shū)由夏敏捷(中原工學(xué)院)主持編寫(xiě),尚展壘(鄭州輕工業(yè)大學(xué))編寫(xiě)第1~7章,劉濟(jì)宗(中原工學(xué)院)編寫(xiě)第10章和第11章,高艷霞(中原工學(xué)院)編寫(xiě)第12章,其余章節(jié)由夏敏捷編寫(xiě)。在本書(shū)的編寫(xiě)過(guò)程中,為確保內(nèi)容的正確性,參閱了很多資料,并且得到了資深Python程序員的支持,張錦歌、張慎武參與了本書(shū)的校對(duì)和修訂工作,在此謹(jǐn)向他們表示衷心的感謝。
由于作者水平有限,書(shū)中難免疏漏和不足之處,敬請(qǐng)廣大讀者批評(píng)指正。
夏敏捷
2020年7月
目錄
源碼下載
第1章Python基礎(chǔ)知識(shí)
1.1Python語(yǔ)言簡(jiǎn)介
1.2Python語(yǔ)法基礎(chǔ)
1.2.1Python數(shù)據(jù)類(lèi)型
1.2.2序列數(shù)據(jù)結(jié)構(gòu)
1.2.3Python控制語(yǔ)句
1.2.4Python函數(shù)與模塊
1.3Python面向?qū)ο笤O(shè)計(jì)
1.3.1定義和使用類(lèi)
1.3.2構(gòu)造函數(shù)__init__
1.3.3析構(gòu)函數(shù)
1.3.4實(shí)例屬性和類(lèi)屬性
1.3.5私有成員與公有成員
1.3.6方法
1.3.7類(lèi)的繼承
1.3.8多態(tài)
1.4Python 圖形界面設(shè)計(jì)
1.4.1創(chuàng)建Windows窗口
1.4.2幾何布局管理器
1.4.3Tkinter 組件
1.4.4Python事件處理
1.5Python文件的使用
1.5.1打開(kāi)(建立)文件
1.5.2讀取文本文件
1.5.3寫(xiě)文本文件
1.5.4文件的關(guān)閉
1.5.5操作Excel文檔
1.6Python的第三方庫(kù)
第2章HTML基礎(chǔ)知識(shí)和Python文本處理
2.1HTML基礎(chǔ)
2.1.1什么是HTML
2.1.2HTML的歷史
2.2HTML 4基礎(chǔ)和HTML 5新特性
2.2.1HTML 4基礎(chǔ)知識(shí)
2.2.2HTML 4基本標(biāo)簽
2.2.3HTML 5的新特性
2.2.4在瀏覽器中查看HTML源代碼
2.3CSS語(yǔ)法基礎(chǔ)
2.3.1CSS基本語(yǔ)句
2.3.2在HTML文檔中應(yīng)用CSS樣式
2.3.3CSS 選擇器
2.4Python文本處理
2.4.1字符串基本處理
2.4.2正則表達(dá)式
2.4.3正則表達(dá)式語(yǔ)法
2.4.4re模塊
2.4.5正則表達(dá)式的實(shí)際應(yīng)用案例
2.5XPath
2.5.1lxml庫(kù)安裝
2.5.2XPath語(yǔ)法
2.5.3在Python中使用XPath
第3章網(wǎng)絡(luò)通信基礎(chǔ)知識(shí)
3.1網(wǎng)絡(luò)協(xié)議
3.1.1互聯(lián)網(wǎng)TCP/IP協(xié)議
3.1.2IP協(xié)議和端口
3.1.3TCP和UDP協(xié)議
3.1.4HTTP和HTTPS協(xié)議
3.1.5HTTP基本原理與機(jī)制
3.1.6使用Fiddler抓包驗(yàn)證請(qǐng)求信息和響應(yīng)信息
3.2Socket編程
3.2.1Socket的概念
3.2.2Socket提供的函數(shù)方法
3.2.3TCP協(xié)議編程
第4章小試牛刀——下載網(wǎng)站圖片
4.1HTTP下載網(wǎng)站圖片功能介紹
4.2程序設(shè)計(jì)的思路
4.3關(guān)鍵技術(shù)
4.3.1urllib庫(kù)簡(jiǎn)介
4.3.2urllib庫(kù)的基本使用
4.3.3圖片文件下載到本地
4.4程序設(shè)計(jì)的步驟
第5章調(diào)用百度API獲取數(shù)據(jù)——小小翻譯器
5.1小小翻譯器功能介紹
5.2程序設(shè)計(jì)的思路
5.3關(guān)鍵技術(shù)
5.3.1urllib庫(kù)的高級(jí)使用
5.3.2使用User Agent隱藏身份
5.3.3JSON使用
5.4程序設(shè)計(jì)的步驟
5.4.1設(shè)計(jì)界面
5.4.2使用百度翻譯開(kāi)放平臺(tái)API
5.5API調(diào)用拓展——爬取天氣預(yù)報(bào)信息
第6章動(dòng)態(tài)網(wǎng)頁(yè)爬蟲(chóng)應(yīng)用——抓取百度圖片
6.1程序功能介紹
6.2程序設(shè)計(jì)的思路
6.3關(guān)鍵技術(shù)
6.3.1Ajax動(dòng)態(tài)網(wǎng)頁(yè)
6.3.2BeautifulSoup庫(kù)概述
6.3.3BeautifulSoup庫(kù)操作解析HTML文檔樹(shù)
6.3.4requests庫(kù)的使用
6.3.5Ajax動(dòng)態(tài)網(wǎng)頁(yè)爬取
6.4程序設(shè)計(jì)的步驟
6.4.1分析網(wǎng)頁(yè)源代碼和網(wǎng)頁(yè)結(jié)構(gòu)
6.4.2設(shè)計(jì)代碼
6.5動(dòng)態(tài)網(wǎng)頁(yè)爬蟲(chóng)拓展——爬取今日頭條新聞
6.5.1找到JavaScript請(qǐng)求的數(shù)據(jù)接口
6.5.2分析JSON數(shù)據(jù)
6.5.3請(qǐng)求和解析數(shù)據(jù)接口
第7章Selenium操作瀏覽器應(yīng)用——模擬登錄豆瓣網(wǎng)站
7.1模擬登錄程序功能介紹
7.2程序設(shè)計(jì)的思路
7.3關(guān)鍵技術(shù)
7.3.1安裝Selenium庫(kù)
7.3.2Selenium詳細(xì)用法
7.3.3Selenium應(yīng)用實(shí)例
7.4程序設(shè)計(jì)的步驟
7.4.1Selenium定位iframe(多層框架)
7.4.2模擬登錄豆瓣網(wǎng)站
7.5基于Cookie繞過(guò)驗(yàn)證碼實(shí)現(xiàn)自動(dòng)登錄
7.5.1為什么要使用Cookie
7.5.2查看Cookie
7.5.3使用Cookie繞過(guò)百度驗(yàn)證碼自動(dòng)登錄賬戶(hù)
7.6Selenium實(shí)現(xiàn)Ajax動(dòng)態(tài)加載抓取今日頭條新聞
7.6.1Selenium處理滾動(dòng)條
7.6.2Selenium 動(dòng)態(tài)加載抓取今日頭條新聞
7.7Selenium實(shí)現(xiàn)動(dòng)態(tài)加載抓取新浪國(guó)內(nèi)新聞
第8章微信網(wǎng)頁(yè)版協(xié)議API應(yīng)用——微信機(jī)器人
8.1微信網(wǎng)頁(yè)版機(jī)器人功能介紹
8.2微信網(wǎng)頁(yè)版機(jī)器人設(shè)計(jì)思路
8.2.1分析微信網(wǎng)頁(yè)版API
8.2.2API匯總
8.2.3其他說(shuō)明
8.3程序設(shè)計(jì)步驟
8.3.1微信網(wǎng)頁(yè)版運(yùn)行流程
8.3.2程序目錄
8.3.3微信網(wǎng)頁(yè)版運(yùn)行代碼實(shí)現(xiàn)
8.4微信網(wǎng)頁(yè)版機(jī)器人擴(kuò)展功能
8.4.1自動(dòng)回復(fù)
8.4.2群發(fā)消息、定時(shí)發(fā)送消息、好友狀態(tài)檢測(cè)
8.4.3自動(dòng)邀請(qǐng)好友加入群聊
8.5微信庫(kù)itchat實(shí)現(xiàn)微信聊天機(jī)器人
8.5.1安裝itchat
8.5.2itchat的登錄微信
8.5.3itchat的消息類(lèi)型
8.5.4itchat回復(fù)消息
8.5.5itchat獲取賬號(hào)
8.5.6itchat的一些簡(jiǎn)單應(yīng)用
8.5.7Python調(diào)用圖靈機(jī)器人API實(shí)現(xiàn)簡(jiǎn)單的人機(jī)交互
8.5.8程序設(shè)計(jì)的步驟
8.5.9開(kāi)發(fā)消息同步機(jī)器人
第9章爬蟲(chóng)應(yīng)用——校園網(wǎng)搜索引擎
9.1校園網(wǎng)搜索引擎功能分析
9.2校園網(wǎng)搜索引擎系統(tǒng)設(shè)計(jì)
9.3關(guān)鍵技術(shù)
9.3.1中文分詞
9.3.2安裝和使用jieba
9.3.3jieba添加自定義詞典
9.3.4文本分類(lèi)的關(guān)鍵詞提取
9.3.5deque(雙向隊(duì)列)
9.4程序設(shè)計(jì)的步驟
9.4.1信息采集模塊——網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)
9.4.2索引模塊——建立倒排詞表
9.4.3網(wǎng)頁(yè)排名和搜索模塊
第10章SQLite數(shù)據(jù)庫(kù)存儲(chǔ)——大河報(bào)紙媒爬蟲(chóng)
10.1大河報(bào)紙媒爬蟲(chóng)功能介紹
10.2大河報(bào)紙媒爬蟲(chóng)設(shè)計(jì)思路
10.3關(guān)鍵技術(shù)
10.3.1訪問(wèn)SQLite數(shù)據(jù)庫(kù)的步驟
10.3.2創(chuàng)建數(shù)據(jù)庫(kù)和表
10.3.3數(shù)據(jù)庫(kù)的插入、更新和刪除操作
10.3.4數(shù)據(jù)庫(kù)表的查詢(xún)操作
10.3.5數(shù)據(jù)庫(kù)使用實(shí)例——學(xué)生通訊錄
10.3.6requestshtml庫(kù)
10.4程序設(shè)計(jì)步驟
10.4.1獲取網(wǎng)頁(yè)
10.4.2數(shù)據(jù)入庫(kù)
第11章MySQL數(shù)據(jù)庫(kù)存儲(chǔ)——微博采集爬蟲(chóng)
11.1微博采集爬蟲(chóng)功能介紹
11.2微博采集爬蟲(chóng)設(shè)計(jì)思路
11.3關(guān)鍵技術(shù)
11.3.1查看Cookie
11.3.2模擬登錄實(shí)例
11.3.3使用Python操作MySQL數(shù)據(jù)庫(kù)
11.3.4Base64加密
11.4程序設(shè)計(jì)步驟
11.4.1模擬登錄
11.4.2獲取網(wǎng)頁(yè)
11.4.3數(shù)據(jù)入庫(kù)
第12章Scrapy框架爬蟲(chóng)
12.1Scrapy框架簡(jiǎn)介與安裝
12.1.1Scrapy框架簡(jiǎn)介
12.1.2Scrapy安裝
12.2第一個(gè)Scrapy爬蟲(chóng)
12.2.1項(xiàng)目需求
12.2.2創(chuàng)建項(xiàng)目
12.2.3分析頁(yè)面
12.2.4定義數(shù)據(jù)類(lèi)
12.2.5實(shí)現(xiàn)爬蟲(chóng)
12.2.6配置爬蟲(chóng)
12.2.7運(yùn)行爬蟲(chóng)
12.3Spider開(kāi)發(fā)流程
12.3.1繼承scrapy.Spider
12.3.2為spider起名字
12.3.3設(shè)置起始爬取點(diǎn)
12.3.4實(shí)現(xiàn)頁(yè)面解析函數(shù)
12.4Scrapy選擇器
12.4.1Selector類(lèi)
12.4.2Response內(nèi)置Selector
12.4.3使用CSS選擇器
12.4.4爬取京東商品信息
12.5Scrapy數(shù)據(jù)容器
12.5.1Item和Field
12.5.2Item擴(kuò)展
12.5.3爬取百度貼吧信息
12.6Scrapy常用命令行工具
12.6.1全局命令
12.6.2項(xiàng)目命令
12.7Scrapy數(shù)據(jù)處理
12.7.1實(shí)現(xiàn)Item Pipeline
12.7.2Item Pipeline舉例
12.7.3啟用Item Pipeline
12.8爬取文件和圖片
12.8.1FilesPipeline
12.8.2FilesPipeline實(shí)例
12.8.3ImagePipeline
12.8.4爬取百度圖片
12.9Scrapy模擬登錄
12.9.1模擬登錄分析
12.9.2代碼實(shí)現(xiàn)
第13章詞云實(shí)戰(zhàn)——爬取豆瓣影評(píng)生成詞云
13.1功能介紹
13.2程序設(shè)計(jì)的思路
13.3關(guān)鍵技術(shù)
13.3.1安裝WordCloud詞云
13.3.2使用WordCloud詞云
13.4程序設(shè)計(jì)的步驟
參考文獻(xiàn)