本書深入系統地介紹了Python流行框架Scrapy的相關技術及使用技巧。全書共14章,從邏輯上可分為基礎篇和高級篇兩部分,基礎篇重點介紹Scrapy的核心元素,如spider、selector、item、link等;高級篇講解爬蟲的高級話題,如登錄認證、文件下載、執行JavaScript、動態網頁爬取、使用HTTP、分布式爬蟲的編寫等,并配合項目案例講解,包括供練習使用的網站,以及、知乎、豆瓣、360爬蟲案例等。 本書案例豐富,注重實踐,代碼注釋詳盡,適合有一定Python語言基礎,想學習編寫復雜網絡爬蟲的讀者使用。
本書以應用為出發點,詳細深入地介紹了Python流行框架Scrapy的核心技術及網絡爬蟲的開發技巧。本書分為基礎篇和高級篇兩部分,基礎篇重點介紹Scrapy的核心元素,如spider、selector、item、link等;高級篇講解如登錄認證、文件下載、執行JavaScript、動態網頁爬取、使用HTTP、分布式爬蟲的編寫等內容。為方便讀者快速上手,本書還設計了大量項目案列,包括供練習用的網站的爬取以及如、知乎、豆瓣、360等網站的爬取。本書很適合有一定Python語言基礎,想學習編寫復雜網絡爬蟲的讀者使用。此外,書中涉及的關聯知識很豐富,可以幫助讀者拓展知識面,掌握更多實用技能。
劉碩:碩士,曾就職于知名外企,從事一線開發工作10年,目前主要從事Python開發與教學工作,在慕課網開設有多門Python課程,深受學員歡迎。
第1章 初識Scrapy 1
1.1 網絡爬蟲是什么 1
1.2 Scrapy簡介及安裝 2
1.3 編寫及時個Scrapy爬蟲 3
1.3.1 項目需求 4
1.3.2 創建項目 4
1.3.3 分析頁面 5
1.3.4 實現Spider 6
1.3.5 運行爬蟲 8
1.4 本章小結 11
第2章 編寫Spider 12
2.1 Scrapy框架結構及工作原理 12
2.2 Request和Response對象 14
2.2.1 Request對象 15
2.2.2 Response對象 16
2.3 Spider開發流程 18
2.3.1 繼承scrapy.Spider 19
2.3.2 為Spider命名 20
2.3.3 設定起始爬取點 20
2.3.4 實現頁面解析函數 22
2.4 本章小結 22
第3章 使用Selector提取數據 23
3.1 Selector對象 23
3.1.1 創建對象 24
3.1.2 選中數據 25
3.1.3 提取數據 26
3.2 Response內置Selector 28
3.3 XPath 29
3.3.1 基礎語法 30
3.3.2 常用函數 35
3.4 CSS選擇器 36
3.5 本章小結 40
第4章 使用Item封裝數據 41
4.1 Item和Field 42
4.2 拓展Item子類 44
4.3 Field元數據 44
4.4 本章小結 47
第5章 使用Item Pipeline處理數據 48
5.1 Item Pipeline 48
5.1.1 實現Item Pipeline 49
5.1.2 啟用Item Pipeline 50
5.2 更多例子 51
5.2.1 過濾重復數據 51
5.2.2 將數據存入
MongoDB 54
5.3 本章小結 57
第6章 使用LinkExtractor提取鏈接 58
6.1 使用LinkExtractor 59
6.2 描述提取規則 60
6.3 本章小結 65
第7章 使用Exporter導出數據 66
7.1 指定如何導出數據 67
7.1.1 命令行參數 67
7.1.2 配置文件 69
7.2 添加導出數據格式 70
7.2.1 源碼參考 70
7.2.2 實現Exporter 72
7.3 本章小結 74
第8章 項目練習 75
8.1 項目需求 77
8.2 頁面分析 77
8.3 編碼實現 83
8.4 本章小結 88
第9章 下載文件和圖片 89
9.1 FilesPipeline和
ImagesPipeline 89
9.1.1 FilesPipeline使用
說明 90
9.1.2 ImagesPipeline使用
說明 91
9.2 項目實戰:爬取matplotlib
例子源碼文件 92
9.2.1 項目需求 92
9.2.2 頁面分析 94
9.2.3 編碼實現 96
9.3 項目實戰:下載360圖片 103
9.3.1 項目需求 104
9.3.2 頁面分析 104
9.3.3 編碼實現 107
9.4 本章小結 109
第10章 模擬登錄 110
10.1 登錄實質 110
10.2 Scrapy模擬登錄 114
10.2.1 使用FormRequest 114
10.2.2 實現登錄Spider 117
10.3 識別驗證碼 119
10.3.1 OCR識別 119
10.3.2 網絡平臺識別 123
10.3.3 人工識別 127
10.4 Cookie登錄 128
10.4.1 獲取瀏覽器
Cookie 128
10.4.2 CookiesMiddleware
源碼分析 129
10.4.3 實現BrowserCookies-
Middleware 132
10.4.4 爬取知乎個人
信息 133
10.5 本章小結 135
第11章 爬取動態頁面 136
11.1 Splash渲染引擎 140
11.1.1 render.html端點 141
11.1.2 execute端點 142
11.2 在Scrapy中使用Splash 145
11.3 項目實戰:爬取toscrape
中的名人名言 146
11.3.1 項目需求 146
11.3.2 頁面分析 146
11.3.3 編碼實現 147
11.4 項目實戰:爬取京東商城
中的書籍信息 149
11.4.1 項目需求 149
11.4.2 頁面分析 149
11.4.3 編碼實現 152
11.5 本章小結 154
第12章 存入數據庫 155
12.1 SQLite 156
12.2 MySQL 159
12.3 MongoDB 165
12.4 Redis 169
12.5 本章小結 173
第13章 使用HTTP 174
13.1 HttpProxyMiddleware 175
13.1.1 使用簡介 175
13.1.2 源碼分析 177
13.2 使用多個 179
13.3 獲取免費 180
13.4 實現隨機 184
13.5 項目實戰:爬取豆瓣電影
信息 187
13.5.1 項目需求 188
13.5.2 頁面分析 189
13.5.3 編碼實現 194
13.6 本章小結 198
第14章 分布式爬取 199
14.1 Redis的使用 200
14.1.1 安裝Redis 200
14.1.2 Redis基本命令 201
14.2 scrapy-redis源碼分析 206
14.2.1 分配爬取任務
部分 207
14.2.2 匯總爬取數據
部分 214
14.3 使用scrapy-redis進行分
布式爬取 217
14.3.1 搭建環境 217
14.3.2 項目實戰 218
14.4 本章小結 224
第1章 初識Scrapy本章首先介紹爬蟲的基本概念、工作流程,然后介紹Scrapy的安裝和網絡爬蟲項目的實現流程,使讀者對網絡爬蟲有一個大致的了解,并且建立起網絡爬蟲的編寫思路。本章重點講解以下內容:? 網絡爬蟲及爬蟲的工作流程。? Scrapy的介紹與安裝。? 網絡爬蟲編寫步驟。1.1 網絡爬蟲是什么網絡爬蟲是指在互聯網上自動爬取網站內容信息的程序,也被稱作網絡蜘蛛或網絡機器人。大型的爬蟲程序被廣泛應用于搜索引擎、數據挖掘等領域,個人用戶或企業也可以利用爬蟲收集對自身有價值的數據。舉一個簡單的例子,假設你在本地新開了一家以外賣生意為主的餐館,現在要給菜品定價,此時便可以開發一個爬蟲程序,在美團、餓了么、百度外賣這些外賣網站爬取大量其他餐館的菜品價格作為參考,以指導定價。一個網絡爬蟲程序的基本執行流程可以總結為以下循環: 1.下載頁面一個網頁的內容本質上就是一個HTML文本,爬取一個網頁內容之前,首先要根據網頁的URL下載網頁。2.提取頁面中的數據當一個網頁(HTML)下載完成后,對頁面中的內容進行分析,并提取出我們感興趣的數據,提取到的數據可以以多種形式保存起來,比如將數據以某種格式(CSV、JSON)寫入文件中,或存儲到數據庫(MySQL、MongoDB)中。3.提取頁面中的鏈接通常,我們想要獲取的數據并不只在一個頁面中,而是分布在多個頁面中,這些頁面彼此聯系,一個頁面中可能包含一個或多個到其他頁面的鏈接,提取完當前頁面中的數據后,還要把頁面中的某些鏈接也提取出來,然后對鏈接頁面進行爬取(循環1-3步驟)。設計爬蟲程序時,還要考慮防止重復爬取相同頁面(URL去重)、網頁搜索策略(深度優先或廣度優先等)、爬蟲訪問邊界限定等一系列問題。從頭開發一個爬蟲程序是一項煩瑣的工作,為了避免因制造輪子而消耗大量時間,在實際應用中我們可以選擇使用一些的爬蟲框架,使用框架可以降低開發成本,提高程序質量,讓我們能夠專注于業務邏輯(爬取有價值的數據)。接下來,本書就帶你學習目前非常流行的開源爬蟲框架 Scrapy。1.2 Scrapy簡介及安裝Scrapy是一個使用Python語言(基于Twisted框架)編寫的開源網絡爬蟲框架,目前由Scrapinghub Ltd維護。Scrapy簡單易用、靈活易拓展、開發社區活躍,并且是跨平臺的。在Linux、 MaxOS以及Windows平臺都可以使用。Scrapy應用程序也使用Python進行開發,目前可以支持Python 2.7以及Python 3.4 版本。在任意操作系統下,可以使用pip安裝Scrapy,例如:$ pip install scrapy為確認Scrapy已安裝成功,首先在Python中測試能否導入Scrapy模塊:>>> import scrapy>>> scrapy.version_info(1, 3, 3)然后,在shell中測試能否執行Scrapy這條命令:$ scrapyScrapy 1.3.3 - no active project
Usage: scrapy [options] [args]
Available commands: bench Run quick benchmark test commands fetch Fetch a URL using the Scrapy downloader genspider Generate new spider using pre-defined templates runspider Run a self-contained spider (without creating a project) settings Get settings values shell Interactive scraping console startproject Create new project version Print Scrapy version view Open URL in browser, as seen by Scrapy
[ more ] More commands available when run from project directory
Use "scrapy -h" to see more info about a command通過了以上兩項檢測,說明Scrapy安裝成功了。如上所示,我們安裝的是當前近期版本1.3.3。
真不錯這本書值得買
相關的書不多,值得一看。一直在當當買書,當當的書值得信賴
書不錯!!!!
書不錯,正在學習。贊一個
好書, 內容翔實, 講解透徹. 快遞小哥也很給力,
作者寫得很專業,講解到位,通俗易懂,用例子學習,有很多新技術,非常好的一本書,推薦購買。