<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      TOP

      Scrapy 框架 - 簡介

      Scrapy 框架

      介紹

      Scrapy一個開源和協作的框架,其最初是為了頁面抓取 (更確切來說, 網絡抓取 )所設計的,使用它可以以快速、簡單、可擴展的方式從網站中提取所需的數據。但目前Scrapy的用途十分廣泛,可用于如數據挖掘、監測和自動化測試等領域,也可以應用在獲取API所返回的數據(例如 Amazon Associates Web Services ) 或者通用的網絡爬蟲。

          Scrapy 是基于twisted框架開發而來,twisted是一個流行的事件驅動的python網絡框架。因此Scrapy使用了一種非阻塞(又名異步)的代碼來實現并發。

      框架架構

      整體架構大致如下

       

      框架流程解析

      • 1、spiders產生request請求,將請求交給引擎
      • 2、引擎(EGINE)吧剛剛處理好的請求交給了調度器,以一個隊列或者堆棧的形式吧這些請求保存起來,調度一個出來再傳給引擎
      • 3、調度器(SCHEDULER)返回給引擎一個要爬取的url
      • 4、引擎把調度好的請求發送給download,通過中間件發送(這個中間件至少有 兩個方法,一個請求的,一個返回的),
      • 5、一旦完成下載就返回一個response,通過下載器中間件,返回給引擎,引擎把response 對象傳給下載器中間件,最后到達引擎
      • 6、引擎從下載器中收到response對象,從下載器中間件傳給了spiders(spiders里面做兩件事,1、產生request請求,2、為request請求綁定一個回調函數),spiders只負責解析爬取的任務。不做存儲,
      • 7、解析完成之后返回一個解析之后的結果items對象及(跟進的)新的Request給引擎,就被ITEM PIPELUMES處理了
      • 8、引擎將(Spider返回的)爬取到的Item給Item Pipeline,存入數據庫,持久化,如果數據不對,可重新封裝成一個request請求,傳給調度器
      • 9、(從第二步)重復直到調度器中沒有更多地request,引擎關閉該網站

      核心組件

      引擎

      引擎負責控制系統所有組件之間的數據流,并在某些動作發生時觸發事件。

      調度器

      用來接受引擎發過來的請求, 壓入隊列中, 并在引擎再次請求的時候返回.

      可以想像成一個URL的優先級隊列, 由它來決定下一個要抓取的網址是什么, 同時去除重復的網址

      下載器

      用于下載網頁內容, 并將網頁內容返回給引擎

      下載器是建立在 twisted 這個高效的異步模型上的

      爬蟲

      SPIDERS是開發人員自定義的類,用來解析responses,并且提取items,或者發送新的請求

      項目管道(ITEM PIPLINES)

      在items被提取后負責處理它們

      主要包括清理、驗證、持久化(比如存到數據庫)等操作

      下載器中間件

       下載器中間件是在引擎及下載器之間的特定鉤子(specific hook),處理Downloader傳遞給引擎的response。

      其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy功能。

      更多內容請看 下載器中間件(Downloader Middleware) 。

      爬蟲中間件

       Spider中間件是在引擎及Spider之間的特定鉤子(specific hook),處理spider的輸入(response)和輸出(items及requests)。

      其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy功能。

      更多內容請看 Spider中間件(Middleware) 。

      下載安裝

      #Windows平臺
          1、pip3 install wheel #安裝后,便支持通過wheel文件安裝軟件,wheel文件官網:https://www.lfd.uci.edu/~gohlke/pythonlibs
          3、pip3 install lxml
          4、pip3 install pyopenssl
          5、下載并安裝pywin32:https://sourceforge.net/projects/pywin32/files/pywin32/
          6、下載twisted的wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
          7、執行pip3 install 下載目錄\Twisted-17.9.0-cp36-cp36m-win_amd64.whl
          8、pip3 install scrapy
        
      #Linux平臺
          1、pip3 install scrapy

       關于下載中的報錯問題請看這里 

       命令行工具

      #1 查看幫助
          scrapy -h
          scrapy <command> -h
      
      #2 有兩種命令:其中Project-only必須切到項目文件夾下才能執行,而Global的命令則不需要
          Global commands:
              startproject #創建項目
              genspider    #創建爬蟲程序
              settings     #如果是在項目目錄下,則得到的是該項目的配置
              runspider    #運行一個獨立的python文件,不必創建項目
              shell        #scrapy shell url地址  在交互式調試,如選擇器規則正確與否
              fetch        #獨立于程單純地爬取一個頁面,可以拿到請求頭
              view         #下載完畢后直接彈出瀏覽器,以此可以分辨出哪些數據是ajax請求
              version      #scrapy version 查看scrapy的版本,scrapy version -v查看scrapy依賴庫的版本
          Project-only commands:
              crawl        #運行爬蟲,必須創建項目才行,確保配置文件中ROBOTSTXT_OBEY = False
              check        #檢測項目中有無語法錯誤
              list         #列出項目中所包含的爬蟲名
              edit         #編輯器,一般不用
              parse        #scrapy parse url地址 --callback 回調函數  #以此可以驗證我們的回調函數是否正確
              bench        #scrapy bentch壓力測試
      
      #3 官網鏈接
          https://docs.scrapy.org/en/latest/topics/commands.html
      全局命令:所有文件夾都使用的命令,可以不依賴與項目文件也可以執行
      項目的文件夾下執行的命令
      1、scrapy startproject Myproject #創建項目
         cd Myproject
      
      2、scrapy genspider baidu www.baidu.com #創建爬蟲程序,baidu是爬蟲名,定位爬蟲的名字 #寫完域名以后默認會有一個url,
      3、scrapy settings --get BOT_NAME #獲取配置文件
      #
      全局:4、scrapy runspider budui.py
      5、scrapy runspider AMAZON\spiders\amazon.py #執行爬蟲程序 在項目下:scrapy crawl amazon #指定爬蟲名,定位爬蟲程序來運行程序 #robots.txt 反爬協議:在目標站點建一個文件,里面規定了哪些能爬,哪些不能爬 # 有的國家覺得是合法的,有的是不合法的,這就產生了反爬協議 # 默認是ROBOTSTXT_OBEY = True # 修改為ROBOTSTXT_OBEY = False #默認不遵循反扒協議
      6、scrapy shell https://www.baidu.com #直接超目標站點發請求 response response.status response.body view(response)
      7、scrapy view https://www.taobao.com #如果頁面顯示內容不全,不全的內容則是ajax請求實現的,以此快速定位問題
      8、scrapy version #查看版本
      9、scrapy version -v #查看scrapy依賴庫鎖依賴的版本
      10、scrapy fetch --nolog http://www.logou.com #獲取響應的內容
      11、scrapy fetch --nolog --headers http://www.logou.com #獲取響應的請求頭 (venv3_spider) E:\twisted\scrapy框架\AMAZON>scrapy fetch --nolog --headers http://www.logou.com > Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 > Accept-Language: en > User-Agent: Scrapy/1.5.0 (+https://scrapy.org) > Accept-Encoding: gzip,deflate > < Content-Type: text/html; charset=UTF-8 < Date: Tue, 23 Jan 2018 15:51:32 GMT < Server: Apache >代表請求 <代表返回
      10、scrapy shell http://www.logou.com #直接朝目標站點發請求
      11、scrapy check #檢測爬蟲有沒有錯誤
      12、scrapy list #所有的爬蟲名
      13、scrapy parse http://quotes.toscrape.com/ --callback parse #驗證回調函函數是否成功執行
      14、scrapy bench #壓力測試

      創建項目以及啟動爬蟲

      scrapy startproject xx 
      cd xx 
      scrapy genspider chouti chouti.com 
      
      scrapy crawl chouti --nolog 

       默認只能在cmd中執行爬蟲,如果想在pycharm中執行需要如下操作

      #在項目目錄下新建:entrypoint.py
      from scrapy.cmdline import execute
      # execute(['scrapy', 'crawl', 'amazon','--nolog'])  # 不要日志打印
      # execute('scrapy crawl amazon'.split())  # 需要列表的形式, 也可以字符串切割為列表傳入 
      
      # 多個參數的傳遞也是一個一個傳即可
      # "acrapy crawl amzaon -a keyword=iphone8"
      execute(['scrapy', 'crawl', 'amazon1','-a','keyword=iphone8','--nolog'])  
      
      # execute(['scrapy', 'crawl', 'amazon1'])

       記得設置編碼格式在 windows 環境下

      import sys,os 
      sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')

      項目結構

      project_name/
         scrapy.cfg
         project_name/
             __init__.py
             items.py
             pipelines.py
             settings.py
             spiders/
                 __init__.py
                 爬蟲1.py
                 爬蟲2.py
                 爬蟲3.py

       

      posted @ 2019-02-09 05:32  羊駝之歌  閱讀(744)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产一区二区三区不卡自拍 | 亚洲av永久无码精品网站| 思思99热精品在线| 亚洲自拍偷拍福利小视频| 加勒比中文字幕无码一区| 国产亚洲精品中文字幕| 国产高清在线精品一区不卡| av无码精品一区二区三区四区| 国产一区二区日韩在线| 国产大陆av一区二区三区| 18禁无遮挡啪啪无码网站破解版| 炉霍县| 欧洲精品码一区二区三区| 蜜臀91精品国产高清在线| 亚洲成人网在线观看| 亚洲中少妇久久中文字幕| 重口SM一区二区三区视频 | 日本亚洲欧洲无免费码在线| 国产SUV精品一区二区6| 六盘水市| 国产一区二区不卡在线| 任我爽精品视频在线播放| 亚洲精品国产中文字幕| 精品一卡2卡三卡4卡乱码精品视频| 亚洲中文字幕国产综合| 亚洲精品欧美综合二区| 久久精品国产亚洲不AV麻豆| 国产成人综合久久亚洲av| 免费国产高清在线精品一区| 亚洲av第二区国产精品| 登封市| 中文国产不卡一区二区| 午夜福利偷拍国语对白| 成在人线AV无码免观看| 噜噜噜噜私人影院| 国产中文三级全黄| 被黑人巨大一区二区三区| 亚洲欧美日韩综合久久久| 华容县| 国内精品久久人妻无码妲| 久久国产乱子精品免费女|