【Python面試真題】- scrapy和scrapy-redis有什么區別?為什么選擇redis數據庫?

【Python面試真題】- scrapy和scrapy-redis有什么區別?為什么選擇redis數據庫?

1) scrapy是一個Python爬蟲框架,爬取效率極高,具有高度定制性,但是不支持分布式。而scrapy-redis一套基于redis數據庫、運行在scrapy框架之上的組件,可以讓scrapy支持分布式策略,Slaver端共享Master端redis數據庫里的item隊列、請求隊列和請求指紋集合。

2) 為什么選擇redis數據庫,因為redis支持主從同步,而且數據都是緩存在內存中的,所以基于redis的分布式爬蟲,對請求和數據的高頻讀取效率非常高。

2. 你用過的爬蟲框架或者模塊有哪些?談談他們的區別或者優缺點?

Python自帶:urllib,urllib2

第 三 方:requests

框    架:Scrapy

urllib和urllib2模塊都做與請求URL相關的操作,但他們提供不同的功能。

urllib2.:urllib2.urlopen可以接受一個Request對象或者url,(在接受Request對象時候,并以此可以來設置一個URL 的headers),urllib.urlopen只接收一個url

urllib 有urlencode,urllib2沒有,因此總是urllib,urllib2常會一起使用的原因

scrapy是封裝起來的框架,他包含了下載器,解析器,日志及異常處理,基于多線程, twisted的方式處理,對于固定單個網站的爬取開發,有優勢,但是對于多網站爬取 100個網站,并發及分布式處理方面,不夠靈活,不便調整與括展。

request 是一個HTTP庫, 它只是用來,進行請求,對于HTTP請求,他是一個強大的庫,下載,解析全部自己處理,靈活性更高,高并發與分布式部署也非常靈活,對于功能可以更好實現.

Scrapy優缺點:

優點:scrapy 是異步的

采取可讀性更強的xpath代替正則

強大的統計和log系統

同時在不同的url上爬行

支持shell方式,方便獨立調試

寫middleware,方便寫一些統一的過濾器

通過管道的方式存入數據庫

缺點:基于python的爬蟲框架,擴展性比較差

基于twisted框架,運行中的exception是不會干掉reactor,并且異步框架出錯后是不會停掉其他任務的,數據出錯后難以察覺。



相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code
云南快乐10分开奖直播