scrapy暫停和重啟,及url去重原理,telenet簡單使用


一.scrapy暫停與重啟

  1.要暫停,就要保留一些中間信息,以便重啟讀取中間信息並從當前位置繼續爬取,則需要一個目錄存放中間信息:

    scrapy crawl spider_name -s JOBDIR=dir/001——spider_name是你要爬取得spider的py文件名,JOBDIR是命令參數,即代表存放位置參數,dir是中間信息要保存的目錄,001新生成的文件夾名是保存的中間信息,重啟則讀取該文件信息。可以將JOBDIR 設置在setting中,或寫在custom_settings中,在Pycharm中都會執行,但是在Pycharm中無法發送ctrl+c,即無法將進程放入后台並暫停。

  2.執行命令:scrapy crawl jobbole -s JOBDIR=jobs/001

    2.1有可能會報以下錯誤,這是因為未進入到項目目錄(crawl會搜索scrapy.cfg文件):

    2.2進入目錄正常運行后,ctrl+c暫停進程:

     會在jobs下生成一個001文件夾生成如下圖文件,request.seen是保存的已經訪問了的url,spider.state是spider的狀態信息,request.queue中有active.json和p0兩個文件,p0是還需要繼續做的request(跑完該文件就沒有了)

 

  3.重啟(也是執行scrapy crawl jobbole -s JOBDIR=jobs/001):

    會讀取相關信息並繼續執行,p0文件會減小,request.seen文件會增大(讀取新的request,存入url),兩次ctrl+c強制關掉,若需從新爬則可以指定新的文件夾,如jobs/002.

二.scrapy去重原理

  對於每一個url的請求,調度器都會根據請求得相關信息加密(request_fingerprint)得到一個指紋信息,並且將指紋信息和set()集合中的指紋信息進行比對,如果set()集合中已經存在這個數據,就不在將這個Request放入隊列中。如果set()集合中沒有存在這個加密后的數據,就將這個Request對象放入隊列中,等待被調度。

 

三.telnet的簡單使用

  1.telnet簡介:

    Scrapy配有內置的telnet控制台,用於檢查和控制Scrapy運行過程。telnet控制台只是在Scrapy進程中運行的常規python shell,所以你可以從中做任何事情。

  2.windows打開telnet客戶端和服務端:

  3.telenet連接:

    telnet控制台偵聽TELNETCONSOLE_PORT設置中定義的TCP端口 ,默認為6023,如下:

      telenet localhost 6023

  4.telenet簡單使用(相當於一個python終端):

    變量:

    

 

 

 

      

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM