動態IP代理軟體有話說:天下爬蟲框架皆出Scrapy
針對規模小、抓取資料量小、對抓取速度不比較敏感的爬蟲軟體, 應用 Requests 能輕輕鬆鬆拿下。這種網頁爬蟲關鍵作用是抓取網頁頁面、輕鬆玩網頁頁面。假如人們必須抓取網站及其系列產品網上平臺,要求網路爬蟲具備抓取失敗能覆盤、爬取速度較高等特點。很顯然 Requests 不能完全滿足我們的需求。因此,需要一功能更加強大的第三方爬蟲框架庫 —— Scrapy。學會Scrapy,百分之八九十的爬蟲框架都能玩兒轉了。
一、Scrapy 的特性
Scrapy 是一個框架。因而,它集一些各功能強大的 python 庫的優點於一身。下面列舉其一些特性:
HTML, XML源資料 選擇及提取 的內建支援
提供了一系列在spider之間共享的可複用的過濾器(即 Item Loaders),對智慧處理爬取資料提供了內建支援。
透過 feed匯出 提供了多格式(JSON、CSV、XML),多儲存後端(FTP、S3、本地檔案系統)的內建支援
提供了media pipeline,可以 自動下載 爬取到的資料中的圖片(或者其他資源)。
高擴充套件性。您可以透過使用 signals ,設計好的API(中介軟體, extensions, pipelines)來定製實現您的功能。
內建的中介軟體及擴充套件為下列功能提供了支援:
cookies and session 處理
HTTP 壓縮
HTTP 認證
HTTP 快取
user-agent模擬
robots.txt
爬取深度限制
健壯的編碼支援和自動識別,用於處理外文、非標準和錯誤編碼問題
針對多爬蟲下效能評估、失敗檢測,提供了可擴充套件的 狀態收集工具 。
內建 Web service, 使您可以監視及控制您的機器。
二、初探 Scrapy
1. Scrapy 工程專案詳細分析
Scrapy 新建立工程專案需透過命令列操作。在特定資料夾名稱中,開啟終端實行以下命令:
scrapy startproject 專案的名字
我新建一個名為 scrapy_demo,執行結果如下。
使用 Pycharm 開啟該新專案,讓我們會發覺新專案的層次構架及其文件。
這種文件的功能是:
scrapy.cfg:工程專案的配置檔案,開發設計不用採用。
scrapy_demo:專案中會有兩個同名的資料夾名稱。最表層表示 project,裡面那個目錄代表 module(專案的核心)。
scrapy_demo/items.py:以欄位形式界定中後期必須處理的網路資料。
scrapy_demo/pipelines.py:提取出來的 Item 物件回到的資料並進行儲存。
scrapy_demo/settings.py:專案的設定文件。可以對網路爬蟲進行自定設定,例如挑選深度優先爬取還是廣度優先爬取,設定對每個IP的爬蟲數,設定每個域名的爬蟲數,設定爬蟲延時,設定代理等等。
scrapy_demo/spider: 這個目錄儲放網頁爬蟲原始碼。
__init__.py:python 包要求,對 scrapy 作用不大。
2. Scrapy 的架構
Scrapy 好比由許多元件拼裝起來的大機器。因此,可以採取從整體到區域性的順序學習 Scrapy。
Scheduler:排程器。負責接受 Engine 傳送過來的 Requests 請求,並將其佇列化;
Item Pipeline:Item Pipeline負責處理被spider提取出來的item。其有典型應用,如清理 HTML 資料、驗證爬取的資料(檢查 item 包含某些欄位)、查重(並丟棄)、爬取資料持久化(存入資料庫、寫入檔案等);
Scrapy Engine:引擎是 Scrapy 的中樞。它負責控制資料流在系統中所有元件中流動,並在相應動作發生時觸發事件;
Downloader Middlewares:下載中介軟體是 Engine 和 Downloader 的樞紐。負責處理 Downloader 傳遞給 Engine 的 responses;它還支援自定義擴充套件。
Downloader:負責下載 Engine 傳送的所有 Requests 請求,並將其獲取到的 responses 回傳給 Scrapy Engine;
Spider middlewares:Spider 中介軟體是 Engine 和 Spider 的連線橋樑;它支援自定義擴充套件來處理 Spider 的輸入(responses) 以及輸出 item 和 requests 給 Engine ;
Spiders:負責解析 Responses 並提取 Item 欄位需要的資料,再將需要跟進的URL提交給引擎,再次進入Scheduler(排程器);
3. Scrapy 工作機制
當引擎(Engine) 收到 Spider 傳送過來的 url 主入口地址(其實是一個 Request 物件, 因為 Scrapy 內部是用到 Requests 請求庫),Engine 會進行初始化操作。
Engine 請求排程器(Scheduler),讓 Scheduler 排程出下一個 url 給 Engine。
Scheduler 返回下一個 url 給 Engine。
Engine 將 url透過下載中介軟體(請求(request)方向)轉發給下載器(Downloader)。
一旦頁面下載完畢,Downloader 生成一個該頁面的Response,並將其透過下載中介軟體(返回(response)方向)傳送給 Engine
引擎將從下載器中接收到 Response 傳送給Spider處理。
Spider 處理 Response 並返回爬取到的 Item 及新的 Request 給引擎。
Engine 將 Spider 返回的爬取到的 Item 轉發給Item Pipeline,順便也將將 Request 給排程器。
重複(第2步)直到排程器中沒有更多地request,引擎關閉該網站。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561288/viewspace-2286259/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 爬蟲動態http代理ip有什麼功能爬蟲HTTP
- 014-活該你爬蟲被封之Scrapy Ip代理中介軟體爬蟲
- 動態ip代理軟體:只要網際網路在,爬蟲就存在爬蟲
- Scrapy爬蟲框架爬蟲框架
- scrapy爬蟲代理池爬蟲
- 好用的爬蟲軟體?動態ip軟體告訴你爬蟲
- 導致爬蟲動態代理IP超時的原因有哪些爬蟲
- 爬蟲代理 Scrapy 框架詳細介紹 2爬蟲框架
- 爬蟲(9) - Scrapy框架(1) | Scrapy 非同步網路爬蟲框架爬蟲框架非同步
- Python爬蟲動態ip代理防止被封的方法Python爬蟲
- python爬蟲Scrapy框架Python爬蟲框架
- Python爬蟲—Scrapy框架Python爬蟲框架
- Scrapy爬蟲框架如何使用代理進行採集爬蟲框架
- 爬蟲代理IP有哪些好處?爬蟲
- 爬蟲框架-scrapy的使用爬蟲框架
- Scrapy爬蟲框架的使用爬蟲框架
- Scrapy框架的使用之Scrapy通用爬蟲框架爬蟲
- 代理ip池對爬蟲有多重要爬蟲
- python爬蟲常用之Scrapy 中介軟體Python爬蟲
- Python爬蟲怎麼設定動態IP代理,Python爬蟲要注意哪些事項?Python爬蟲
- 如何高效獲取大資料?動態ip代理:用爬蟲!大資料爬蟲
- Python爬蟲工作對代理IP有哪些需求?Python爬蟲
- 爬蟲工作使用代理IP有哪些優勢?爬蟲
- Python爬蟲教程-30-Scrapy 爬蟲框架介紹Python爬蟲框架
- python網路爬蟲(14)使用Scrapy搭建爬蟲框架Python爬蟲框架
- 動態換ip軟體帶你看:爬蟲常見的抓取策略爬蟲
- Scrapy使用入門及爬蟲代理配置爬蟲
- 動態ip代理教你:如何用爬蟲實現前端頁面渲染爬蟲前端
- Python爬蟲教程-31-建立 Scrapy 爬蟲框架專案Python爬蟲框架
- 爬蟲 Scrapy框架 爬取圖蟲圖片並下載爬蟲框架
- 分散式爬蟲有哪些使用代理IP的方法?分散式爬蟲
- 代理ip池對爬蟲有什麼好處爬蟲
- 爬蟲使用代理防封IP爬蟲
- 如何建立爬蟲代理ip池爬蟲
- 爬蟲如何使用ip代理池爬蟲
- 爬蟲代理怎麼選ip爬蟲
- 代理IP如何突破反爬蟲?爬蟲
- 爬蟲代理IP的使用技巧爬蟲