Learning Scrapy筆記(一)- Scrapy簡單介紹

 

Scrapy簡述

Scrapy十一個健壯的,用來從互聯網上抓取數據的web框架,Scrapy只須要一個配置文件就能組合各類組件和配置選項,而且Scrapy是基於事件(event-based)的架構,使得咱們能夠級聯多個操做,包括清理、組織、存儲數據到數據庫等等。假設如今你要抓取一個網站,這個網站的每一頁都有一百個條目,Scrapy能夠絕不費勁地同時對這個網站發起16個請求,假如每一個請求須要一秒鐘來完成,你就至關於每秒鐘爬取16個頁面,至關於每秒鐘生成了1600個條目,假如要把這些條目同時存儲到雲上,每個條目的存儲須要3秒鐘(假設的),爲了處理這16個請求,就須要運行1600 *3 = 4800個併發的寫入請求,對於一個傳統的多線程程序來講,就須要轉換成4800個線程,這會對系統形成極大的壓力。而對於Scrapy來講,只要你的硬件過關, 4800個併發請求是沒有問題的。html

 

使用Scrapy的更多理由

Scrapy已經發展了5年有多,已經變得成熟和穩定,除了上面提到的性能優勢外,Scrapy還有如下幾點優勢:web

  • Scrapy能夠處理不完整的HTML

  你能夠在Scrapy中使用Beautiful Soup或者lxml,但Scrapy已經提供了selectors(一個在lxml的基礎上提供了更高級的接口),能夠高效地處理不完整的HTML代碼數據庫

  • 活躍的Scrapy社區

  Scrapy擁有一個活躍的社區,尤爲是在Stack Overflow(https://stackoverflow.com/questions/tagged/Scrapy)上有上千個問題的討論,更多的社區論壇能夠參考這裏:http://Scrapy.org/community/多線程

  • 由社區維護的具備良好架構的代碼

  Scrapy要求你用標準的方式去組織你的代碼,因此你在與他人合做時,別人不用苦苦研究你那擁有奇淫技巧的爬蟲架構

  • 新特性愈來愈多且質量穩定

  經過觀察Scrapy的新聞發佈頁(http://doc.Scrapy.org/en/latest/news.html),就能夠看到在增長的新特性和bug修正併發

 

忠告

在爬取信息的時候有兩個最重要的原則必定要堅守:框架

  • 不要產生相似於DOS攻擊的行爲

  一個普通的網站瀏覽者會花上幾秒鐘去瀏覽一個網頁,可是一個爬蟲能夠在一秒鐘內下載幾十個網頁,這會對網站和網站管理員形成壓力。經過使用節流閥來自動調整你的下載速率至普通用戶級別,若是你的爬取響應時間愈來愈長,就要減小你的爬取強度。而Scrapy都提供了以上功能性能

  • 不要侵犯他人的版權

  在你要爬取一個網站以前,最好先查看版權信息聲明,弄明白你被容許的行動範圍,大多數的網站都容許你下載他們的信息,前提是你不聲明對這些信息的版權。要注意的是,Scrapy會使用你的爬蟲名稱做爲User-Agent,來讓網站管理員識別出這是一個由爬蟲發出的請求。Scrapy也提供一個名爲RobotsTxtMiddleware的插件,這個插件能夠自動遵照網站的robots.txt協議。網站

相關文章
相關標籤/搜索