日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

導讀:Scrapy由Python語言編寫,是一個快速、高層次的屏幕抓取和Web抓取框架,用于抓取Web站點并從頁面中提取出結構化的數據。Scrapy用途廣泛,可以用于數據挖掘、監測和自動化測試等。

作者:趙國生 王健

來源:華章科技

終于有人把Scrapy爬蟲框架講明白了

 

Scrapy是用純Python語言實現的一個為爬取網站數據、提取結構性數據而編寫的應用框架,Scrapy使用了Twisted異步網絡框架來處理網絡通信,可以加快我們的下載速度,不用自己去實現異步框架,并且包含了各種中間件接口,可以靈活地實現各種需求。

Scrapy可以應用在包括數據挖掘、信息處理或存儲歷史數據等一系列的程序中,其最初是為頁面抓?。ǜ_切地說是網絡抓?。┒O計的,也可以應用于獲取API所返回的數據(例如Amazon Associates Web Services)或者通用的網絡爬蟲。

01 Scrapy框架介紹

關于Scrapy框架的最簡單的安裝方法是:

通過anaconda→environments→最右邊界面的第一個選項all,在搜索框里搜索scrapy→選擇安裝。

或者在terminal或者cmd中使用pip安裝就好。

# python 3+
pip3 install scrapy

Scrapy內部實現了包括并發請求、免登錄、URL去重等很多復雜操作,用戶不需要明白Scrapy內部具體的爬取策略,只需要根據自己的需求去編寫小部分的代碼,就能抓取到所需要的數據。Scrapy框架如圖8-1所示。

終于有人把Scrapy爬蟲框架講明白了

▲圖8-1 Scrapy框架

圖8-1中帶箭頭的線條表示數據流向,首先從初始URL開始,調度器(Scheduler)會將其交給下載器(Downloader),下載器向網絡服務器(Internet)發送服務請求以進行下載,得到響應后將下載的數據交給爬蟲(Spider),爬蟲會對網頁進行分析,分析出來的結果有兩種:一種是需要進一步抓取的鏈接,這些鏈接會被傳回調度器;另一種是需要保存的數據,它們則被送到項目管道(Item Pipeline),Item會定義數據格式,最后由Pipeline對數據進行清洗、去重等處理,繼而存儲到文件或數據庫。

02 Scrapy框架詳解

Scrapy由Python語言編寫,是一個快速、高層次的屏幕抓取和Web抓取框架,用于抓取Web站點并從頁面中提取出結構化的數據。Scrapy用途廣泛,可以用于數據挖掘、監測和自動化測試等。

1. 框架內組件及作用

Scrapy框架內包含的組件如下:

  • 爬蟲中間件(Spider Middleware):位于Scrapy引擎和爬蟲之間的框架,主要用于處理爬蟲的響應輸入和請求輸出。
  • 調度器中間件(Scheduler Middleware):位于Scrapy引擎和調度器之間的框架,主要用于處理從Scrapy引擎發送到調度器的請求和響應。
  • 調度器:用來接收引擎發過來的請求,壓入隊列中,并在引擎再次請求的時候返回。它就像是一個URL的優先隊列,由它來決定下一個要抓取的網址是什么,同時在這里會去除重復的網址。
  • 下載器中間件(Downloader Middleware):位于Scrapy引擎和下載器之間的框架,主要用于處理Scrapy引擎與下載器之間的請求及響應。代理IP和用戶代理可以在這里設置。
  • 下載器:用于下載網頁內容,并將網頁內容返回給爬蟲。
  • Scrapy引擎(ScrapyEngine):用來控制整個系統的數據處理流程,并進行事務處理的觸發。
  • 爬蟲:爬蟲主要是干活的,用于從特定網頁中提取自己需要的信息,即所謂的項目(又稱實體)。也可以從中提取URL,讓Scrapy繼續爬取下一個頁面。
  • 項目管道:負責處理爬蟲從網頁中爬取的項目,主要的功能就是持久化項目、驗證項目的有效性、清除不需要的信息。當頁面被爬蟲解析后,將被送到項目管道,并經過幾個特定的次序來處理其數據。

2. Scrapy運行流程

Scrapy運行流程如下:

  1. 引擎從調度器中取出一個URL用于接下來的抓??;
  2. 引擎把URL封裝成一個請求(request)傳給下載器;
  3. 下載器把資源下載下來,并封裝成一個響應(response);
  4. 爬蟲解析響應;
  5. 解析出的是項目,則交給項目管道進行進一步的處理;
  6. 解析出的是鏈接URL,則把URL交給調度器等待下一步的抓取。

3. 數據流向

Scrapy數據流是由執行流程的核心引擎來控制的,流程如圖8-2所示。

終于有人把Scrapy爬蟲框架講明白了

▲圖8-2 框架組件數據流

  1. 引擎打開網站,找到處理該網站的爬蟲并向該爬蟲請求第一個要爬取的URL。
  2. 引擎從爬蟲中獲取到第一個要爬取的URL,并在調度器中以請求調度。
  3. 引擎向調度器請求下一個要爬取的URL。
  4. 調度器返回下一個要爬取的URL給引擎,引擎通過下載中間件轉給下載器。
  5. 一旦頁面下載完畢,下載器便會生成一個該頁面的響應,并通過下載器中間件將其發送給引擎。
  6. 引擎從下載器中接收到響應并通過爬蟲中間件發送給爬蟲處理。
  7. 爬蟲處理響應,并返回爬取到的項目及新的請求給引擎。
  8. 引擎將爬蟲爬取到的項目傳給項目管道,將爬蟲返回的請求傳給調度器。
  9. 從第2步重復直到調度器中沒有更多的請求,引擎便會關閉該網站。

03 Scrapy框架中的Selector

當我們取得了網頁的響應之后,最關鍵的就是如何從繁雜的網頁中把我們需要的數據提取出來,Python中常用以下模塊來處理HTTP文本解析問題:

  • BeautifulSoup:作為程序員間非常流行的網頁分析庫,它通常基于html代碼的結構來構造一個Python對象,對不良標記的處理也非常合理,但它有一個缺點,就是“慢”。
  • lxml:一個基于ElementTree的Python化的XML解析庫。

我們可以在Scrapy中使用任意熟悉的網頁數據提取工具,如上面的兩種,但是,Scrapy本身也為我們提供了一套提取數據的機制,我們稱之為選擇器Selector,它通過特定的XPath或者css表達式來選擇HTML文件中的某個部分。

XPath是一門用來在XML文件中選擇節點的語言,也可以用在HTML上。CSS是一門將HTML文檔樣式化的語言。選擇器由它定義,并與特定的HTML元素的樣式相關連。

Selector是基于lxml來構建的,支持XPath選擇器、CSS選擇器以及正則表達式,功能全面、解析速度快且和準確度高。

本文篇幅有限,具體實操案例請關注華章科技后續內容推送,或查閱《Python網絡爬蟲技術與實戰》一書第8章。

關于作者:趙國生,哈爾濱師范大學教授,工學博士,碩士生導師,黑龍江省網絡安全技術領域特殊人才。主要從事可信網絡、入侵容忍、認知計算、物聯網安全等方向的教學與科研工作。

本文摘編自《Python網絡爬蟲技術與實戰》,經出版方授權發布。

分享到:
標簽:Scrapy
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定