Scrapy十一個健壯的,用來從互聯網上抓取數據的web框架,Scrapy只須要一個配置文件就能組合各類組件和配置選項,而且Scrapy是基於事件(event-based)的架構,使得咱們能夠級聯多個操做,包括清理、組織、存儲數據到數據庫等等。假設如今你要抓取一個網站,這個網站的每一頁都有一百個條目,Scrapy能夠絕不費勁地同時對這個網站發起16個請求,假如每一個請求須要一秒鐘來完成,你就至關於每秒鐘爬取16個頁面,至關於每秒鐘生成了1600個條目,假如要把這些條目同時存儲到雲上,每個條目的存儲須要3秒鐘(假設的),爲了處理這16個請求,就須要運行1600 *3 = 4800個併發的寫入請求,對於一個傳統的多線程程序來講,就須要轉換成4800個線程,這會對系統形成極大的壓力。而對於Scrapy來講,只要你的硬件過關, 4800個併發請求是沒有問題的。html
Scrapy已經發展了5年有多,已經變得成熟和穩定,除了上面提到的性能優勢外,Scrapy還有如下幾點優勢:web
你能夠在Scrapy中使用Beautiful Soup或者lxml,但Scrapy已經提供了selectors(一個在lxml的基礎上提供了更高級的接口),能夠高效地處理不完整的HTML代碼數據庫
Scrapy擁有一個活躍的社區,尤爲是在Stack Overflow(https://stackoverflow.com/questions/tagged/Scrapy)上有上千個問題的討論,更多的社區論壇能夠參考這裏:http://Scrapy.org/community/多線程
Scrapy要求你用標準的方式去組織你的代碼,因此你在與他人合做時,別人不用苦苦研究你那擁有奇淫技巧的爬蟲架構
經過觀察Scrapy的新聞發佈頁(http://doc.Scrapy.org/en/latest/news.html),就能夠看到在增長的新特性和bug修正併發
在爬取信息的時候有兩個最重要的原則必定要堅守:框架
一個普通的網站瀏覽者會花上幾秒鐘去瀏覽一個網頁,可是一個爬蟲能夠在一秒鐘內下載幾十個網頁,這會對網站和網站管理員形成壓力。經過使用節流閥來自動調整你的下載速率至普通用戶級別,若是你的爬取響應時間愈來愈長,就要減小你的爬取強度。而Scrapy都提供了以上功能性能
在你要爬取一個網站以前,最好先查看版權信息聲明,弄明白你被容許的行動範圍,大多數的網站都容許你下載他們的信息,前提是你不聲明對這些信息的版權。要注意的是,Scrapy會使用你的爬蟲名稱做爲User-Agent,來讓網站管理員識別出這是一個由爬蟲發出的請求。Scrapy也提供一個名爲RobotsTxtMiddleware的插件,這個插件能夠自動遵照網站的robots.txt協議。網站