Scrapy 框架【學習筆記01】

Scrapy 框架

  • Scrapy是用純Python實現一個為了爬取網站數據、提取結構性數據而編寫的應用框架,用途非常廣泛。

  • 框架的力量,用戶只需要定制開發幾個模塊就可以輕松的實現一個爬蟲,用來抓取網頁內容以及各種圖片,非常之方便。

  • Scrapy 使用了 Twisted['tw?st?d](其主要對手是Tornado)異步網絡框架來處理網絡通訊,可以加快我們的下載速度,不用自己去實現異步框架,并且包含了各種中間件接口,可以靈活的完成各種需求。

Scrapy架構圖(綠線是數據流向):

  • Scrapy Engine(引擎): 負責SpiderItemPipelineDownloaderScheduler中間的通訊,信號、數據傳遞等。

  • Scheduler(調度器): 它負責接受引擎發送過來的Request請求,并按照一定的方式進行整理排列,入隊,當引擎需要時,交還給引擎

  • Downloader(下載器):負責下載Scrapy Engine(引擎)發送的所有Requests請求,并將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spider來處理,

  • Spider(爬蟲):它負責處理所有Responses,從中分析提取數據,獲取Item字段需要的數據,并將需要跟進的URL提交給引擎,再次進入Scheduler(調度器)

  • Item Pipeline(管道):它負責處理Spider中獲取到的Item,并進行進行后期處理(詳細分析、過濾、存儲等)的地方.

  • Downloader Middlewares(下載中間件):你可以當作是一個可以自定義擴展下載功能的組件。

  • Spider Middlewares(Spider中間件):你可以理解為是一個可以自定擴展和操作引擎Spider中間通信的功能組件(比如進入Spider的Responses;和從Spider出去的Requests)

Scrapy的運作流程

代碼寫好,程序開始運行...

  1. 引擎:Hi!Spider, 你要處理哪一個網站?

  2. Spider:老大要我處理xxxx.com。

  3. 引擎:你把第一個需要處理的URL給我吧。

  4. Spider:給你,第一個URL是xxxxxxx.com。

  5. 引擎:Hi!調度器,我這有request請求你幫我排序入隊一下。

  6. 調度器:好的,正在處理你等一下。

  7. 引擎:Hi!調度器,把你處理好的request請求給我。

  8. 調度器:給你,這是我處理好的request

  9. 引擎:Hi!下載器,你按照老大的下載中間件的設置幫我下載一下這個request請求

  10. 下載器:好的!給你,這是下載好的東西。(如果失敗:sorry,這個request下載失敗了。然后引擎告訴調度器,這個request下載失敗了,你記錄一下,我們待會兒再下載)

  11. 引擎:Hi!Spider,這是下載好的東西,并且已經按照老大的下載中間件處理過了,你自己處理一下(注意!這兒responses默認是交給def parse()這個函數處理的)

  12. Spider:(處理完畢數據之后對于需要跟進的URL),Hi!引擎,我這里有兩個結果,這個是我需要跟進的URL,還有這個是我獲取到的Item數據。

  13. 引擎:Hi !管道?我這兒有個item你幫我處理一下!調度器!這是需要跟進URL你幫我處理下。然后從第四步開始循環,直到獲取完老大需要全部信息。

  14. 管道``調度器:好的,現在就做!

注意!只有當調度器中不存在任何request了,整個程序才會停止,(也就是說,對于下載失敗的URL,Scrapy也會重新下載。)

制作 Scrapy 爬蟲 一共需要4步:

  • 新建項目 (scrapy startproject xxx):新建一個新的爬蟲項目
  • 明確目標 (編寫items.py):明確你想要抓取的目標
  • 制作爬蟲 (spiders/xxspider.py):制作爬蟲開始爬取網頁
  • 存儲內容 (pipelines.py):設計管道存儲爬取內容

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456774.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456774.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456774.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

通過profile 用maven命令打不同配置的變量包

profiles定義如下<profiles><profile><id>local</id><properties><deploy.type>local</deploy.type></properties></profile><profile><id>dev</id><properties><deploy.type>dev</de…

執行Hive的查詢語句報錯:java.lang.IllegalArgumentException: Does not contain a valid host:port authority: loca

好不容易把Hive裝完了&#xff0c;結果一執行Hive的查詢語句運行MapReduce程序立馬報錯。。。 log詳細信息如下&#xff1a; Job running in-process (local Hadoop) Hadoop job information for null: number of mappers: 1; number of reducers: 0 2017-10-21 21:54:15,503…

scrapy startproject【學習筆記02】

入門案例 學習目標 創建一個Scrapy項目定義提取的結構化數據(Item)編寫爬取網站的 Spider 并提取出結構化數據(Item)編寫 Item Pipelines 來存儲提取到的Item(即結構化數據) 一. 新建項目(scrapy startproject) 在開始爬取之前&#xff0c;必須創建一個新的Scrapy項目。進入…

開始把其他的博客搬家到這里了

今天&#xff0c;用一晚上的時間進行一下文章的遷移吧。這樣以后查詢就可以在自己的博客中查找了&#xff0c;也算是給自己一個寫作的規律。 從很多個大牛的博客中都閱讀到&#xff0c;寫博客對于一個coder的重要性。希望這次可以堅持。轉載于:https://www.cnblogs.com/cyforev…

java系統高并發解決方案(轉載)

轉載博客地址&#xff1a;http://blog.csdn.net/zxl333/article/details/8685157 一個小型的網站&#xff0c;比如個人網站&#xff0c;可以使用最簡單的html靜態頁面就實現了&#xff0c;配合一些圖片達到美化效果&#xff0c;所有的頁面均存放在一個目錄下&#xff0c;這樣的…

Request/Response【學習筆記03】

Request Request 部分源碼&#xff1a; # 部分代碼 class Request(object_ref):def __init__(self, url, callbackNone, methodGET, headersNone, bodyNone, cookiesNone, metaNone, encodingutf-8, priority0,dont_filterFalse, errbackNone):self._encoding encoding # t…

TotoiseSVN的上手教程

本文轉自&#xff1a;http://www.cnblogs.com/xilentz/archive/2010/05/06/1728945.html TotoiseSVN的基本使用方法&#xff1a; 一、簽入源代碼到SVN服務器 假如我們使用Visual Studio在文件夾StartKit中創建了一個項目&#xff0c;我們要把這個項目的源代碼簽入到SVN Serv…

ALV可輸入狀態下輸入金額字段變小數的問題

http://blog.163.com/mxb_sapyeah/blog/static/10335262520167109022155/ 小數位數兩位 當我在給ALV上給該字段輸入整數 ‘1234 ‘ 時&#xff0c;該數據居然會默認變成‘12.34’ 可以在這里解決這個問題。就是定義字段目錄的時候&#xff0c;對于金額字段指定參考數據類型就…

Downloader Middlewares反反爬蟲【學習筆記04】

反反爬蟲相關機制 Some websites implement certain measures to prevent bots from crawling them, with varying degrees of sophistication. Getting around those measures can be difficult and tricky, and may sometimes require special infrastructure. Please consi…

【轉載】Android 關于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容問題

轉自&#xff1a;【歐陽鵬】http://blog.csdn.net/ouyang_peng Android 設備的CPU類型(通常稱為”ABIs”) armeabiv-v7a: 第7代及以上的 ARM 處理器。2011年15月以后的生產的大部分Android設備都使用它.arm64-v8a: 第8代、64位ARM處理器&#xff0c;很少設備&#xff0c;三星 G…

HDFS的簡介及基本操作(常用的命令參數介紹)

目錄前言&#xff1a;1、HDFS基本概念2、HDFS基本操作總結&#xff1a; 目錄 前言&#xff1a; 總算有空來接著寫大數據的學習筆記了&#xff0c;今天就把之前學過的HDFS的基礎知識詳細的介紹一下&#xff0c;如有哪點寫的不足希望大家多多指教。 1、HDFS基本概念 1.1、前…

Settings【學習筆記05】

Settings Scrapy設置(settings)提供了定制Scrapy組件的方法。可以控制包括核心(core)&#xff0c;插件(extension)&#xff0c;pipeline及spider組件。比如 設置Json Pipeliine、LOG_LEVEL等。 參考文檔&#xff1a;http://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/setti…

java命令

javac.exe是編譯.java文件java.exe是執行編譯好的.class文件javadoc.exe是生成Java說明文檔jdb.exe是Java調試器javaprof.exe是剖析工具轉載于:https://www.cnblogs.com/Berryxiong/p/6143016.html

TensorFlow訓練單特征和多特征的線性回歸

線性回歸 線性回歸是很常見的一種回歸&#xff0c;線性回歸可以用來預測或者分類&#xff0c;主要解決線性問題。相關知識可看“相關閱讀”。 主要思想 在TensorFlow中進行線性回歸處理重點是將樣本和樣本特征矩陣化。 單特征線性回歸 單特征回歸模型為&#xff1a;ywxb 構建模…

大數據之HDFS應用開發(java API)

目錄1、搭建開發環境2、獲取api中的客戶端對象3、DistributedFileSystem實例對象所具備的方法4、HDFS客戶端操作數據代碼示例 目錄 1、搭建開發環境 window下開發的說明: A、在windows的某個目錄下解壓一個hadoop的安裝包 B、將安裝包下的lib和bin目錄用對應windows版本平…

shell腳本執行方式,更方便更快捷。

在進行linux測試時編寫腳本是必不可少的。最近經常使用Linux&#xff0c;感覺太頻繁地敲擊鍵盤有些累了&#xff0c;于是想到了Shell腳本。可以把太多的命令寫成一個腳本&#xff0c;這樣每次執行一遍 shell文件&#xff0c;就可以省去了敲擊鍵盤的時間。于是在網上搜了一些有…

行為科學統計第1章

行為科學統計 Statistics for the Behavioral Sciences 一周只學習一次不如每周學習比較多的幾次高效噢&#xff5e;&#xff3b;一開始&#xff0c;你并不知道這是一個會寫著畫風突變的讀書筆記?…&#xff3d; 第I部分 簡述與描述性統計 第1章 統計學入門 這本書我就是覺得這…

閉包---在函數內部再定義一個函數

什么是閉包 # 定義一個函數 def test(number):# 在函數內部再定義一個函數&#xff0c;并且這個函數用到了外邊函數的變量&#xff0c;那么將這個函數以及用到的一些變量稱之為閉包def test_in(number_in):print("in test_in 函數, number_in is %d" % number_in)re…

慕課網_《Java實現對稱加密》學習總結

時間&#xff1a;2017年4月11日星期二說明&#xff1a;本文部分內容均來自慕課網。慕課網&#xff1a;http://www.imooc.com教學示例源碼&#xff1a;https://github.com/zccodere/s...個人學習源碼&#xff1a;https://github.com/zccodere/s... 第一章&#xff1a;對稱加密算…

大數據之MapReduce詳解(MR的運行機制及配合WordCount實例來說明運行機制)

目錄前言&#xff1a;1、MapReduce原理2、mapreduce實踐&#xff08;WordCount實例&#xff09; 目錄 今天先總體說下MapReduce的相關知識&#xff0c;后續將會詳細說明對應的shuffle、mr與yarn的聯系、以及mr的join操作的等知識。以下內容全是個人學習后的見解&#xff0c;如…