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