本書說明目前最流行的Python 爬蟲架構Scrapy,它簡單好用、靈活易擴充、文件豐富、開發社區活躍,使用Scrapy 可以高效率地開發網路爬蟲應用。本書的讀者只需要有Python 語言基礎即可,我們從零基礎、逐步由淺入深說明。
全書共14章,系統地介紹Python流行框架Scrapy的相關技術及使用技巧。第1~8 章說明Scrapy 開發的核心基礎部分,重點介紹Scrapy的核心元素,如spider、selector、item、link等。
第9~14 章說明實際爬蟲開發中使用頻率最高的一些實用技術,如下載檔案和圖片、模擬登入、執行JavaScript、爬取動態網頁、使用HTTP代理、分散式爬蟲的編寫等內容。
本書主要特色:
■ 所有基礎部分的說明都配有程式範例,而不僅是枯燥的文件。
■ 案例選材方面以說明基礎知識為核心,儘量選擇專門供練習爬蟲技術的網站(不易變動)或接近日常生活的網站(京東、知乎、豆瓣、360)進行示範。
■ 在說明某些基礎知識時,對Scrapy原始程式進行分析,讓讀者能夠「知其然並知其所以然」。
適用:適合有一定Python語言基礎,想學習編寫複雜網路爬蟲的讀者。
作者簡介:
劉碩
曾任職知名外企,從事一線開發工作10年,目前主要從事Python開發與教學工作,在慕課網開設多門Python課程,深受學員歡迎。
作者序
前言
✤ 關於本書
如今是網際網路的時代,而且正在邁入智慧時代。人們早已意識到網際網路中的資料是有待開採的極大金礦,這些資料將改善我們的生活,網路爬蟲開發工作職位的出現和不斷增加正是以對資料價值為基礎的重視。優秀的爬蟲架構就像是開採金礦的強力採擷機,如果你能嫺熟地駕駛它們,就能大幅加強開採效率。
本書說明目前最流行的Python 爬蟲架構Scrapy,它簡單好用、靈活易擴充、文件豐富、開發社區活躍,使用Scrapy 可以高效率地開發網路爬蟲應用。本書的讀者只需要有Python 語言基礎即可,我們從零基礎、逐步由淺入深說明。第1~8 章說明Scrapy 開發的核心基礎部分,其中包含:
■ 初識Scrapy
■ 撰寫Spider
■ 使用Selector分析資料
■ 使用Item封裝資料
■ 使用Item Pipeline處理資料
■ 使用Link Extractor分析連結
■ 使用Exporter匯出資料
■ 專案練習
第9~14 章說明實際爬蟲開發中使用頻率最高的一些實用技術,其中包含:
■ 下載檔案和圖片
■ 模擬登入
■ 爬取動態頁面
■ 存入資料庫
■ 使用HTTP代理
■ 分散式爬取
✤ 本書特色
本書的宗旨是以實用和實戰為教學目標,主要特色是:
■ 所有基礎部分的說明都配有程式範例,而不僅是枯燥的文件。
■ 案例選材方面以說明基礎知識為核心,儘量選擇專門供練習爬蟲技術的網站(不易變動)或接近日常生活的網站(京東、知乎、豆瓣、360)進行示範。
■ 在說明某些基礎知識時,對Scrapy原始程式進行分析,讓讀者能夠「知其然並知其所以然」。
Python 是一種簡單易學、功能強大、開發效率極高的語言,近年來在網路爬蟲、資料分析、機器學習等領域獲得廣泛認可。雖然Python上手容易,但想靈活恰當地運用它也並不簡單。作者在慕課網(www.imooc.com)上推出一套《Python 高級進階實戰》課程,可供有需求的讀者進行參考:http://coding.imooc.com/class/62.html。
✤ 致謝
感謝康爍和陳渝老師在清華大學資訊研究院工作期間對我在專業方面的耐心指導。
感謝清華大學出版社的王金柱編輯給予我這次寫作的機會以及在寫作方面的指點。
感謝同事趙佳音認真閱讀全書並提出了許多的寶貴建議。
感謝劍超和任怡同學認真審稿全書,並對書中程式在多個Python 版本上進行測試。
感謝女兒劉真,她的笑容化解了寫作本書時偶爾的小煩躁。
前言
✤ 關於本書
如今是網際網路的時代,而且正在邁入智慧時代。人們早已意識到網際網路中的資料是有待開採的極大金礦,這些資料將改善我們的生活,網路爬蟲開發工作職位的出現和不斷增加正是以對資料價值為基礎的重視。優秀的爬蟲架構就像是開採金礦的強力採擷機,如果你能嫺熟地駕駛它們,就能大幅加強開採效率。
本書說明目前最流行的Python 爬蟲架構Scrapy,它簡單好用、靈活易擴充、文件豐富、開發社區活躍,使用Scrapy 可以高效率地開發網路爬蟲應用。本書的讀者只需要有Python 語言基礎即可,我們從零基礎、逐步由淺入深說明。第...
目錄
01 初識Scrapy
1.1 網路爬蟲是什麼
1.2 Scrapy 簡介及安裝
1.3 撰寫第一個Scrapy 爬蟲
1.4 本章小結
02 撰寫Spider
2.1 Scrapy 架構結構及工作原理
2.2 Request 和Response 物件
2.3 Spider 開發流程
2.4 本章小結
03 使用Selector 分析資料
3.1 Selector 物件
3.2 Response 內建Selector
3.3 XPath
3.4 CSS 選擇器
3.5 本章小結
04 使用Item 封裝資料
4.1 Item 和Field
4.2 擴充Item 子類別
4.3 Field 中繼資料
4.4 本章小結
05 使用Item Pipeline 處理資料
5.1 Item Pipeline
5.2 更多實例
5.3 本章小結
06 使用LinkExtractor 分析連結
6.1 使用LinkExtractor
6.2 描述分析規則
6.3 本章小結
07 使用Exporter 匯出資料
7.1 指定如何匯出資料
7.2 增加匯出資料格式
7.3 本章小結
08 專案練習
8.1 專案需求
8.2 頁面分析
8.3 程式實現
8.4 本章小結
09 下載檔案和圖片
9.1 FilesPipeline 和ImagesPipeline
9.2 專案實戰:爬取matplotlib 實例原始程式檔案
9.3 專案實戰:下載360 圖片
9.4 本章小結
10 模擬登入
10.1 登入實質
10.2 Scrapy 模擬登入
10.3 識別驗證碼
10.4 Cookie 登入
10.5 本章小結
11 爬取動態頁面
11.1 Splash 繪製引擎
11.2 在Scrapy 中使用Splash
11.3 專案實戰:爬取toscrape 中的名人名言
11.4 專案實戰:爬取京東商場中的書籍資訊
11.5 本章小結
12 存入資料庫
12.1 SQLite
12.2 MySQL
12.3 MongoDB
12.4 Redis
12.5 本章小結
13 使用HTTP 代理
13.1 HttpProxyMiddleware
13.2 使用多個代理
13.3 取得免費代理
13.4 實現隨機代理
13.5 專案實戰:爬取豆瓣電影資訊
13.6 本章小結
14 分散式爬取
14.1 Redis 的使用
14.2 scrapy-redis 原始程式分析
14.3 使用scrapy-redis 進行分散式爬取
14.4 本章小結
01 初識Scrapy
1.1 網路爬蟲是什麼
1.2 Scrapy 簡介及安裝
1.3 撰寫第一個Scrapy 爬蟲
1.4 本章小結
02 撰寫Spider
2.1 Scrapy 架構結構及工作原理
2.2 Request 和Response 物件
2.3 Spider 開發流程
2.4 本章小結
03 使用Selector 分析資料
3.1 Selector 物件
3.2 Response 內建Selector
3.3 XPath
3.4 CSS 選擇器
3.5 本章小結
04 使用Item 封裝資料
4.1 Item 和Field
4.2 擴充Item 子類別
4.3 Field 中繼資料
4.4 本章小結
05 使用Item Pipeline 處理資料
5.1 Item Pipeline
5.2 更多實例
5.3...