前言
自從20世紀(jì)80年代末Python語言誕生至今,它已被廣泛應(yīng)用于處理系統(tǒng)管理任務(wù)和科學(xué)計(jì)算等領(lǐng)域,是頗受歡迎的程序設(shè)計(jì)語言。
因?yàn)镻ython 的語法簡(jiǎn)潔易讀,讓眾多編程入門者不再望而卻步,所以各行各業(yè)的技術(shù)人員都開始將其
用于Web開發(fā)、爬蟲、數(shù)據(jù)清洗、自然語言處理、機(jī)器學(xué)習(xí)和人工智能等方面。其中,網(wǎng)絡(luò)爬蟲所需的獲取、存儲(chǔ)、整理等流程都可以使用Python系統(tǒng)地實(shí)現(xiàn),相信讀者一定會(huì)把Python語言作為實(shí)現(xiàn)爬蟲的主要技術(shù)。
本書適合Python零基礎(chǔ)的讀者開發(fā)爬蟲項(xiàng)目,全書共13章內(nèi)容。第1章是Python基礎(chǔ)入門,主要講解Python的基礎(chǔ)語法和面向?qū)ο缶幊袒A(chǔ)、圖形界面設(shè)計(jì)、文件使用、Python的第三方庫等知識(shí),讀者可以輕松掌握Python基礎(chǔ)知識(shí)。已經(jīng)學(xué)過Python的讀者可以直接從第2章開始學(xué)習(xí)。
第2章和第3章是爬蟲技術(shù)所必備的HTML基礎(chǔ)知識(shí)和網(wǎng)絡(luò)通信基礎(chǔ)知識(shí)。從第4章開始是實(shí)用爬蟲項(xiàng)目案例開發(fā),綜合應(yīng)用前面的基礎(chǔ)技術(shù),并且每章都有新的爬蟲技術(shù),如側(cè)重API獲取數(shù)據(jù)的“小小翻譯器”、應(yīng)用動(dòng)態(tài)網(wǎng)頁爬蟲技術(shù)開發(fā)的案例“抓取百度圖片”“爬取今日頭條新聞”、應(yīng)用中文分詞技術(shù)的“校園網(wǎng)搜索引擎”、應(yīng)用Selenium操作瀏覽器的“模擬登錄豆瓣網(wǎng)站”等案例。另外,第12章還介紹了Scrapy框架爬蟲,可以輕松實(shí)現(xiàn)強(qiáng)大的爬蟲功能。
本書具有以下特點(diǎn):
(1) Python爬蟲設(shè)計(jì)涉及的范圍非常廣泛,本書內(nèi)容編排并不求全、求深,而是考慮零基礎(chǔ)讀者的接受能力,對(duì)Python語言語法介紹以夠用、實(shí)用和應(yīng)用為原則,選擇Python 中必備、實(shí)用的知識(shí)進(jìn)行講解。
(2) 選取的爬蟲案例貼近生活,有助于提高學(xué)習(xí)興趣。
(3) 每個(gè)爬蟲案例均提供詳細(xì)的設(shè)計(jì)思路、關(guān)鍵技術(shù)分析及具體的解決方案。
本書配套資源豐富,包括教學(xué)大綱、教學(xué)課件、電子教案、程序源碼、教學(xué)進(jìn)度表; 本書還配有650分鐘的微課視頻。
資源下載提示
課件等資源: 掃描封底的“課件下載”二維碼,在公眾號(hào)“書圈”下載。
素材(源碼)等資源: 掃描目錄上方的二維碼下載。
視頻等資源: 掃描封底刮刮卡中的二維碼,再掃描書中相應(yīng)章節(jié)中的二維碼,可以在線學(xué)習(xí)。
本書由夏敏捷(中原工學(xué)院)主持編寫,尚展壘(鄭州輕工業(yè)大學(xué))編寫第1~7章,劉濟(jì)宗(中原工學(xué)院)編寫第10章和第11章,高艷霞(中原工學(xué)院)編寫第12章,其余章節(jié)由夏敏捷編寫。在本書的編寫過程中,為確保內(nèi)容的正確性,參閱了很多資料,并且得到了資深Python程序員的支持,張錦歌、張慎武參與了本書的校對(duì)和修訂工作,在此謹(jǐn)向他們表示衷心的感謝。
由于作者水平有限,書中難免疏漏和不足之處,敬請(qǐng)廣大讀者批評(píng)指正。
夏敏捷
2020年7月
目錄
源碼下載
第1章Python基礎(chǔ)知識(shí)
1.1Python語言簡(jiǎn)介
1.2Python語法基礎(chǔ)
1.2.1Python數(shù)據(jù)類型
1.2.2序列數(shù)據(jù)結(jié)構(gòu)
1.2.3Python控制語句
1.2.4Python函數(shù)與模塊
1.3Python面向?qū)ο笤O(shè)計(jì)
1.3.1定義和使用類
1.3.2構(gòu)造函數(shù)__init__
1.3.3析構(gòu)函數(shù)
1.3.4實(shí)例屬性和類屬性
1.3.5私有成員與公有成員
1.3.6方法
1.3.7類的繼承
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打開(建立)文件
1.5.2讀取文本文件
1.5.3寫文本文件
1.5.4文件的關(guān)閉
1.5.5操作Excel文檔
1.6Python的第三方庫
第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語法基礎(chǔ)
2.3.1CSS基本語句
2.3.2在HTML文檔中應(yīng)用CSS樣式
2.3.3CSS 選擇器
2.4Python文本處理
2.4.1字符串基本處理
2.4.2正則表達(dá)式
2.4.3正則表達(dá)式語法
2.4.4re模塊
2.4.5正則表達(dá)式的實(shí)際應(yīng)用案例
2.5XPath
2.5.1lxml庫安裝
2.5.2XPath語法
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庫簡(jiǎn)介
4.3.2urllib庫的基本使用
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庫的高級(jí)使用
5.3.2使用User Agent隱藏身份
5.3.3JSON使用
5.4程序設(shè)計(jì)的步驟
5.4.1設(shè)計(jì)界面
5.4.2使用百度翻譯開放平臺(tái)API
5.5API調(diào)用拓展——爬取天氣預(yù)報(bào)信息
第6章動(dòng)態(tài)網(wǎng)頁爬蟲應(yīng)用——抓取百度圖片
6.1程序功能介紹
6.2程序設(shè)計(jì)的思路
6.3關(guān)鍵技術(shù)
6.3.1Ajax動(dòng)態(tài)網(wǎng)頁
6.3.2BeautifulSoup庫概述
6.3.3BeautifulSoup庫操作解析HTML文檔樹
6.3.4requests庫的使用
6.3.5Ajax動(dòng)態(tài)網(wǎng)頁爬取
6.4程序設(shè)計(jì)的步驟
6.4.1分析網(wǎng)頁源代碼和網(wǎng)頁結(jié)構(gòu)
6.4.2設(shè)計(jì)代碼
6.5動(dòng)態(tài)網(wǎ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庫
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繞過驗(yàn)證碼實(shí)現(xiàn)自動(dòng)登錄
7.5.1為什么要使用Cookie
7.5.2查看Cookie
7.5.3使用Cookie繞過百度驗(yàn)證碼自動(dòng)登錄賬戶
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)加載抓取新浪國內(nèi)新聞
第8章微信網(wǎng)頁版協(xié)議API應(yīng)用——微信機(jī)器人
8.1微信網(wǎng)頁版機(jī)器人功能介紹
8.2微信網(wǎng)頁版機(jī)器人設(shè)計(jì)思路
8.2.1分析微信網(wǎng)頁版API
8.2.2API匯總
8.2.3其他說明
8.3程序設(shè)計(jì)步驟
8.3.1微信網(wǎng)頁版運(yùn)行流程
8.3.2程序目錄
8.3.3微信網(wǎng)頁版運(yùn)行代碼實(shí)現(xiàn)
8.4微信網(wǎng)頁版機(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微信庫itchat實(shí)現(xiàn)微信聊天機(jī)器人
8.5.1安裝itchat
8.5.2itchat的登錄微信
8.5.3itchat的消息類型
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開發(fā)消息同步機(jī)器人
第9章爬蟲應(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文本分類的關(guān)鍵詞提取
9.3.5deque(雙向隊(duì)列)
9.4程序設(shè)計(jì)的步驟
9.4.1信息采集模塊——網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)
9.4.2索引模塊——建立倒排詞表
9.4.3網(wǎng)頁排名和搜索模塊
第10章SQLite數(shù)據(jù)庫存儲(chǔ)——大河報(bào)紙媒爬蟲
10.1大河報(bào)紙媒爬蟲功能介紹
10.2大河報(bào)紙媒爬蟲設(shè)計(jì)思路
10.3關(guān)鍵技術(shù)
10.3.1訪問SQLite數(shù)據(jù)庫的步驟
10.3.2創(chuàng)建數(shù)據(jù)庫和表
10.3.3數(shù)據(jù)庫的插入、更新和刪除操作
10.3.4數(shù)據(jù)庫表的查詢操作
10.3.5數(shù)據(jù)庫使用實(shí)例——學(xué)生通訊錄
10.3.6requestshtml庫
10.4程序設(shè)計(jì)步驟
10.4.1獲取網(wǎng)頁
10.4.2數(shù)據(jù)入庫
第11章MySQL數(shù)據(jù)庫存儲(chǔ)——微博采集爬蟲
11.1微博采集爬蟲功能介紹
11.2微博采集爬蟲設(shè)計(jì)思路
11.3關(guān)鍵技術(shù)
11.3.1查看Cookie
11.3.2模擬登錄實(shí)例
11.3.3使用Python操作MySQL數(shù)據(jù)庫
11.3.4Base64加密
11.4程序設(shè)計(jì)步驟
11.4.1模擬登錄
11.4.2獲取網(wǎng)頁
11.4.3數(shù)據(jù)入庫
第12章Scrapy框架爬蟲
12.1Scrapy框架簡(jiǎn)介與安裝
12.1.1Scrapy框架簡(jiǎn)介
12.1.2Scrapy安裝
12.2第一個(gè)Scrapy爬蟲
12.2.1項(xiàng)目需求
12.2.2創(chuàng)建項(xiàng)目
12.2.3分析頁面
12.2.4定義數(shù)據(jù)類
12.2.5實(shí)現(xiàn)爬蟲
12.2.6配置爬蟲
12.2.7運(yùn)行爬蟲
12.3Spider開發(fā)流程
12.3.1繼承scrapy.Spider
12.3.2為spider起名字
12.3.3設(shè)置起始爬取點(diǎn)
12.3.4實(shí)現(xiàn)頁面解析函數(shù)
12.4Scrapy選擇器
12.4.1Selector類
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)