本書介紹了Python3網絡爬蟲的常見技術。首先介紹了網頁的基礎知識,然后介紹了urllib、Requests請求庫以及XPath、Beautiful Soup等解析庫,接著介紹了selenium對動態(tài)網站的爬取和Scrapy爬蟲框架,最后介紹了Linux基礎,便于讀者自主部署編寫好的爬蟲腳本。本書所有代碼和相關素材可以到GitHub下載獲取,地址為https://github.com/sfvsfv/Crawer。
本書主要面向對網絡爬蟲感興趣的初學者。
本書作者不吃西紅柿、川川都是在CSDN等專業(yè)網站擁有全網50萬粉絲的專業(yè)級博主,意見領袖。本書從基礎知識到案例實戰(zhàn),200多個案例代碼,近200個知識點。
本書內容
本書通過簡單易懂的案例,講解Python語言的爬蟲技術。全書共分為8章,第1章為網頁的內容,第2~7章為爬蟲的內容,第8章為Linux基礎。
第1章:介紹了HTML和CSS的基礎知識,雖然本章并不是直接與爬蟲相關,但它是學習爬蟲技術的基礎。對于已經掌握基本網頁基礎的讀者,可以選擇跳過該章。
第2章:正式進入爬蟲技術的學習階段,這一章介紹了最基本的兩個請求庫(urllib和Requests),有知識點的講解,也有實戰(zhàn)案例的講解。
第3章:本章對正則表達式做了詳細的描述,同時有案例的實踐。學完本章就可以掌握最基本的爬蟲技術了。
第4章:主要介紹XPath解析庫,配有實際的案例進行講解,以幫助讀者加深理解和鞏固。
第5章:主要介紹另一個解析庫Beautiful Soup,它在提取數據中也很方便,對相關知識點以及實際的案例都有所講解。XPath和Beautiful Soup可以使信息的提取更加方便、快捷,是爬蟲利器。
第6章:主要介紹selenium自動化測試。現在越來越多的網站內容是經過 JavaScript 渲染得到的,而原始 HTML 文本可能不包含任何有效內容,使用模塊selenium實現模擬瀏覽器進行數據爬取是非常好的選擇。
第7章:在大規(guī)模數據的爬取中,不太用得上基礎模塊,Scrapy 是目前使用最廣泛的爬蟲框架之一,本章介紹了Scrapy爬蟲框架的詳細搭建和實踐。針對數據存儲過程部分使用的MySql數據庫,整章有多個實際的案例,以幫助讀者加深理解和鞏固。
第8章:主要介紹了Linux的基礎知識點,以幫助讀者能夠在服務器部署腳本。
相關資源
本書所有代碼和相關素材可以到GitHub下載獲取,地址為https://github.com/sfvsfv/Crawer。關于代碼的實用性需要聲明:所有代碼都是筆者在寫書階段編寫的,如果有部分爬蟲腳本失效,有可能是網站的結構發(fā)生了變化。希望讀者在閱讀本書的過程中,以學習筆者所介紹的方法為主。
Python網絡爬蟲入門到實戰(zhàn)致謝
本書的撰寫與出版得益于同行眾多同類教程的啟發(fā),以及陳姍姍老師和同伴周培源的幫助,在此深表感謝。同時也感謝一路走來支持筆者的讀者。由于本人水平有限,書中難免有不妥之處,誠摯期盼專家和廣大讀者批評指正。
楊涵文
網名川川,現致力于全棧開發(fā)領域,在大數據分析與挖掘、機器學習、人工智能、網站開發(fā)等領域實戰(zhàn)經驗豐富。CSDN內容合伙人、阿里云博客專家,全網20萬粉絲博主,熱衷于技術研究,樂于分享。
周培源
網名不吃西紅柿,現任Apple高級工程師。全網30萬粉絲的知名技術博主、CSDN內容合伙人、華為HDZ成員、阿里云博客專家。
陳姍姍
上海工程技術大學講師,理學博士,西澳大學聯培博士,碩士生導師。發(fā)表學術論文20余篇,其中SCI檢索10余篇,國際權威SCI期刊、IEEE等期刊審稿人。參與多項國家自然科學基金重點項目等。
前言
第1章 HTML與CSS基礎/
1.1概述引導/
1.2Hbuilder軟件下載與使用/
1.3HTML基礎/
1.3.1基本架構/
1.3.2標題和段落標簽/
1.3.3文字標簽/
1.3.4圖像標簽/
1.3.5超鏈接標簽/
1.3.6塊標簽/
1.3.7列表標簽/
1.3.8音頻視頻標簽/
1.3.9表格標簽/
1.3.10表單標簽/
1.3.11框架標簽/
1.4免費網頁部署/
1.5為什么要使用CSS框架/
1.6選擇器/
1.6.1標簽選擇器/
1.6.2類選擇器/
1.6.3ID選擇器/
1.6.4全局選擇器/
1.6.5屬性選擇器/
1.6.6包含選擇器/
1.6.7選擇器的綜合使用/
1.7CSS和HTML的結合方式/
1.7.1行內樣式/
1.7.2內嵌樣式/
1.7.3鏈接樣式/
1.7.4導入樣式/
1.7.5優(yōu)先級/
1.8CSS的常見屬性/
1.8.1字體屬性/
1.8.2文本屬性/
1.8.3尺寸屬性/
1.8.4背景屬性/
1.8.5制作照片墻/
1.9作業(yè)習題/
1.9.1HTML作業(yè)習題/
1.9.2CSS作業(yè)習題/Python網絡爬蟲入門到實戰(zhàn)
第2章 urllib、Requests基礎與實戰(zhàn)/
2.1urllib的使用/
2.1.1urlopen網址請求/
2.1.2網頁的保存和異常處理/
2.1.3構造請求對象Requests/
2.1.4添加請求頭/
2.1.5SSL認證/
2.2萬能視頻下載/
2.3Requests中get的使用/
2.3.1Requests基礎:代碼獲取/
2.3.2Requests基礎:構建請求/
2.3.3獲取cookie/
2.3.4添加請求頭/
2.3.5二進制數據獲取/
2.4Requests中post的使用/
2.4.1提交數據表單/
2.4.2添加請求頭/
2.4.3提交json/
2.4.4普通文件上傳/
2.5Requests進階/
2.5.1URLError和HTTPError/
2.5.2Fiddler的下載與簡單使用/
2.5.3登錄網站/
2.5.4代理設置/
2.6實戰(zhàn)演練/
2.6.1獲取某搜索的代碼/
2.6.2下載圖片到本地/
2.6.3下載視頻到本地/
2.6.4爬取翻譯網站/目錄
第3章 正則表達式基礎與實戰(zhàn)/
3.1正則表達式的定義/
3.2Python中的正則表達式/
3.3正則表達式函數/
3.3.1findall()函數/
3.3.2search()函數/
3.3.3split()函數/
3.3.4sub()函數/
3.3.5compile函數/
3.4特殊字符的使用/
3.4.1列表符/
3.4.2點符號/
3.4.3開始符和結束符/
3.4.4星號/
3.4.5加號/
3.4.6集合符號/
3.4.7或符號/
3.5特殊序列/
3.5.1匹配指定字符/
3.5.2匹配開頭、結尾和中間/
3.5.3匹配數字與非數字/
3.5.4空格與非空格匹配/
3.5.5數字與字母的匹配/
3.5.6貪婪模式與非貪婪模式/
3.6集合練習/
3.6.1指定的符號匹配/
3.6.2匹配任意范圍內的小寫字母/
3.7匹配對象/
3.8正則實戰(zhàn):段子爬取/
3.9作業(yè)習題/
第4章 XPath基礎與實戰(zhàn)/
4.1開始使用XPath/
4.1.1常見的HTML操作/
4.1.2常見的XML操作/
4.1.3瀏覽器使用XPath調試/
4.1.4谷歌插件的安裝與XPath Helper的使用/
4.1.5瀏覽器復制XPath/
4.2屬性的匹配/
4.2.1根據具體屬性匹配/
4.2.2通過屬性值的字段匹配/
4.2.3屬性值獲取/
4.3XPath處理HTML常用方法/
4.4實戰(zhàn)學習:房產網站爬取/
4.5多線程爬蟲/
4.5.1進程和線程/
4.5.2Python中的多線程與單線程/
4.5.3單線程修改為多線程/
4.6作業(yè)習題/
第5章 Beautiful Soup基礎與實戰(zhàn)/
5.1什么是Beautiful Soup/
5.2解析器/
5.3解析庫的基本使用/
5.3.1代碼的排版/
5.3.2網頁文檔處理/
5.3.3獲取節(jié)點中的文本/
5.3.4根據屬性匹配/
5.4find_all方法搜索節(jié)點/
5.4.1基本使用/
5.4.2通過標簽搜索/
5.4.3非參數搜索/
5.4.4CSS搜索/
5.4.5通過文本搜索/
5.4.6返回數量限制/
5.5find方法搜索節(jié)點/
5.6CSS選擇器/
5.6.1通過標簽名查找/
5.6.2通過標簽的類名查找/
5.6.3通過標簽的id查找/
5.6.4通過屬性查找/
5.7實戰(zhàn)一:爬取詩詞網站/
5.8實戰(zhàn)二:爬取求職網站/
第6章 selenium自動化測試與實戰(zhàn)/
6.1環(huán)境搭建/
6.2單個元素定位/
6.2.1id定位/
6.2.2name定位/
6.2.3class_name定位/
6.2.4link_text定位/
6.2.5tag_name定位/
6.2.6XPath定位/
6.2.7通過CSS定位/
6.2.8使用By類定位/
6.2.9總結/
6.3元素等待/
6.3.1強制等待/
6.3.2顯示等待/
6.3.3隱式等待/
6.4瀏覽器控制/
6.4.1控制瀏覽器大小/
6.4.2控制瀏覽器前進后退與刷新/
6.4.3文本輸入輸出與表單提交/
6.5鼠標控制/
6.5.1鼠標事件右鍵/
6.5.2鼠標雙擊/
6.6鍵盤控制/
6.7多個元素定位/
6.8文件上傳/
6.9獲取cookie/
6.9.1手動獲取cookie/
6.9.2掃碼自動獲取cookie/
6.10窗口截圖/
6.11策略補充/
6.11.1去除Chrome正受到自動測試軟件的控制/
6.11.2添加代理IP和請求頭/
6.11.3無頭模式/
6.11.4其他一些選項的添加/
6.12字符驗證碼/
6.12.1pytesseract介紹/
6.12.2安裝/
6.12.3中文支持/
6.12.4英文識別/
6.12.5簡單的數字識別/
6.12.6中文識別/
6.12.7ddddocr模塊的使用/
6.12.8彩色圖片識別應用/
6.13自動發(fā)送QQ郵箱/
6.13.1獲取授權碼/
6.13.2發(fā)送文本和附件/
第7章 Scrapy框架與實戰(zhàn)/
7.1框架介紹/
7.2Scrapy入門/
7.2.1創(chuàng)建項目文件/
7.2.2確定目標/
7.2.3定制Item/
7.2.4setting配置修改與使用/
7.2.5數據提取/
7.2.6實戰(zhàn)教學/
7.2.7數據存儲/
7.2.8Item Pipeline管道/
7.2.9Pipelines圖片保存/
7.3實戰(zhàn)一:圖片多頁下載/
7.4實戰(zhàn)二:視頻分析/
7.4.1基本搭建/
7.4.2數據提取/
7.4.3Pipelines保存數據/
7.5實戰(zhàn)三:文字爬取/
7.5.1基本搭建/
7.5.2數據提取/
7.5.3Pipelines保存數據/
7.6Pipelines的多文件執(zhí)行/
7.7日志記錄/
7.7.1logging的語法/
7.7.2簡單使用/
7.8使用選擇器/
7.8.1Scrapy shell基本使用/
7.8.2使用XPath選擇器/
7.8.3CSS選擇器的語法/
7.8.4使用CSS選擇器/
7.8.5嵌套選擇器/
7.8.6正則選擇器/
7.8.7使用相對XPaths/
7.9CrawlSpider的使用/
7.9.1爬取規(guī)則/
7.9.2setting配置修改/
7.9.3應用案例一:某寵物網站爬取/
7.9.4應用案例二:某讀書網站爬取/
7.10內置圖片下載器/
7.10.1基本搭建/
7.10.2數據提取/
7.10.3同步下載/
7.10.4異步下載/
7.11存儲到數據庫/
7.11.1同步存儲/
7.11.2異步存儲/
第8章 Linux基礎/
8.1為什么學習Linux?/
8.2安裝虛擬機/
8.2.1本地安裝虛擬機(推薦)/
8.2.2免費在線Linux服務器/
8.3文件管理/
8.3.1查看目錄/
8.3.2創(chuàng)建文件夾/
8.3.3切換目錄/
8.3.4創(chuàng)建文件/
8.3.5刪除文件和文件夾/
8.3.6復制文件/
8.3.7移動文件/
8.3.8編寫文件內容/
8.3.9查看文件內容/
8.3.10搜索文件內容/
8.3.11查看文件權限/
8.3.12更改權限/
8.4進程管理/
8.5定時任務/