scrapypython35
⑴ scrapy和python有什麼關系
有些人問,開發網路爬蟲應該選擇Nutch、Crawler4j、WebMagic、scrapy、WebCollector還是其他的?這里按照我的經驗隨便扯淡一下:上面說的爬蟲,基本可以分3類:1.分布式爬蟲:Nutch2.JAVA單機爬蟲:Crawler4j、WebMagic、WebCollector3.非JAVA單機爬蟲:scrapy第一類:分布式爬蟲爬蟲使用分布式,主要是解決兩個問題:1)海量URL管理2)網速現在比較流行的分布式爬蟲,是Apache的Nutch。但是對於大多數用戶來說,Nutch是這幾類爬蟲里,最不好的選擇,理由如下:1)Nutch是為搜索引擎設計的爬蟲,大多數用戶是需要一個做精準數據爬取(精抽取)的爬蟲。Nutch運行的一套流程里,有三分之二是為了搜索引擎而設計的。對精抽取沒有太大的意義。也就是說,用Nutch做數據抽取,會浪費很多的時間在不必要的計算上。而且如果你試圖通過對Nutch進行二次開發,來使得它適用於精抽取的業務,基本上就要破壞Nutch的框架,把Nutch改的面目全非,有修改Nutch的能力,真的不如自己重新寫一個分布式爬蟲框架了。2)Nutch依賴hadoop運行,hadoop本身會消耗很多的時間。如果集群機器數量較少,爬取速度反而不如單機爬蟲快。3)Nutch雖然有一套插件機制,而且作為亮點宣傳。可以看到一些開源的Nutch插件,提供精抽取的功能。但是開發過Nutch插件的人都知道,Nutch的插件系統有多蹩腳。利用反射的機制來載入和調用插件,使得程序的編寫和調試都變得異常困難,更別說在上面開發一套復雜的精抽取系統了。而且Nutch並沒有為精抽取提供相應的插件掛載點。Nutch的插件有隻有五六個掛載點,而這五六個掛載點都是為了搜索引擎服務的,並沒有為精抽取提供掛載點。大多數Nutch的精抽取插件,都是掛載在「頁面解析」(parser)這個掛載點的,這個掛載點其實是為了解析鏈接(為後續爬取提供URL),以及為搜索引擎提供一些易抽取的網頁信息(網頁的meta信息、text文本)。4)用Nutch進行爬蟲的二次開發,爬蟲的編寫和調試所需的時間,往往是單機爬蟲所需的十倍時間不止。了解Nutch源碼的學習成本很高,何況是要讓一個團隊的人都讀懂Nutch源碼。調試過程中會出現除程序本身之外的各種問題(hadoop的問題、hbase的問題)。5)很多人說Nutch2有gora,可以持久化數據到avro文件、hbase、mysql等。很多人其實理解錯了,這里說的持久化數據,是指將URL信息(URL管理所需要的數據)存放到avro、hbase、mysql。並不是你要抽取的結構化數據。其實對大多數人來說,URL信息存在哪裡無所謂。6)Nutch2的版本目前並不適合開發。官方現在穩定的Nutch版本是nutch2.2.1,但是這個版本綁定了gora-0.3。如果想用hbase配合nutch(大多數人用nutch2就是為了用hbase),只能使用0.90版本左右的hbase,相應的就要將hadoop版本降到hadoop0.2左右。而且nutch2的官方教程比較有誤導作用,Nutch2的教程有兩個,分別是Nutch1.x和Nutch2.x,這個Nutch2.x官網上寫的是可以支持到hbase0.94。但是實際上,這個Nutch2.x的意思是Nutch2.3之前、Nutch2.2.1之後的一個版本,這個版本在官方的SVN中不斷更新。而且非常不穩定(一直在修改)。所以,如果你不是要做搜索引擎,盡量不要選擇Nutch作為爬蟲。有些團隊就喜歡跟風,非要選擇Nutch來開發精抽取的爬蟲,其實是沖著Nutch的名氣(Nutch作者是DougCutting),當然最後的結果往往是項目延期完成。如果你是要做搜索引擎,Nutch1.x是一個非常好的選擇。Nutch1.x和solr或者es配合,就可以構成一套非常強大的搜索引擎了。如果非要用Nutch2的話,建議等到Nutch2.3發布再看。目前的Nutch2是一個非常不穩定的版本。
⑵ Python安裝Scrapy出現以下錯誤怎麼辦
scapy安裝的錯誤有幾種類型。
因為網路限制,你無法自動下載依賴的庫
因為版本沖突問題,導致你安裝scapy時無法完成安裝,或者是安裝無法正確使用
因為編譯的位數不同64位和32位不同,導致的問題
解決辦法:
簡單的解決辦法。如果scrapy對你很重要。重新安裝一套python2.7然後從頭安裝scrapy,可以從pypi網站上下載。也可以從unofficial來源,一口氣安裝好的包。
耐心的解決辦法。把scrapy的源碼拿過來,執行python
setup.py
install,遇到哪個包不好用,就替換掉。辦法是將那個包的源代碼拿過來,先刪除site-packages里的相應包,再手工執行python
setup.py
install。要有心理准備,很可能需要vc++
2010的編譯器。
最簡單的辦法,使用pip
install
scrapy。
如果你是在ubuntu下面apt-get
install
python-scrapy就搞定了。
⑶ python 怎麼安裝scrapy
我們將需要 Scrapy以及 BeautifulSoup用於屏幕抓取,SQLAlchemy用於存儲數據。
創建虛擬環境(按需)
virtualenv --no-site-packages --python=2.7 ScrapyEnv
[python虛擬環境配置]
安裝scrapy
unix
直接通過 pip 命令安裝
pip install Scrapy
Windows
1. 下載包的編譯版本完成簡易安裝
需要手工安裝 scrapy 的一些依賴:pywin32、pyOpenSSL、Twisted、lxml 和 zope.interface。
2. 使用pip安裝
首先也要安裝pywin32的py2.7版本http://sourceforge.net/projects/pywin32/files/,再安裝scrapy就ok了pip install Scrapy,它會自動安裝依賴的包pyOpenSSL、Twisted、lxml 、six等等。
如果使用的是virtualenv要這樣安裝pywin32:
c:\> D:\python27\Lib\site-packages\pywin32.pth E:\mine\python_workspace\ScrapyEnv\Lib\site-packages\pywin32.pth
將其內容改為:
D:\python27\Lib\site-packages\win32
D:\python27\Lib\site-packages\win32\lib
D:\python27\Lib\site-packages\Pythonwin
[linux和windows下安裝python拓展包
驗證安裝是否成功
通過在python命令行下輸入import scrapy驗證你的安裝,如果沒有返回內容,那麼你的安裝已就緒。
⑷ 如何在scrapy框架下,用python實現爬蟲自動跳轉頁面來抓去網頁內容
Scrapy是一個用Python寫的Crawler Framework,簡單輕巧,並且非常方便。Scrapy使用Twisted這個非同步網路庫來處理網路通信,架構清晰,並且包含了各種中間件介面,可以靈活地完成各種需求。Scrapy整體架構如下圖所示:
根據架構圖介紹一下Scrapy中的各大組件及其功能:
Scrapy引擎(Engine):負責控制數據流在系統的所有組建中流動,並在相應動作發生觸發事件。
調度器(Scheler):從引擎接收Request並將它們入隊,以便之後引擎請求request時提供給引擎。
下載器(Downloader):負責獲取頁面數據並提供給引擎,而後提供給Spider。
Spider:Scrapy用戶編寫用於分析Response並提取Item(即獲取到的Item)或額外跟進的URL的類。每個Spider負責處理一個特定(或一些網站)。
Item Pipeline:負責處理被Spider提取出來的Item。典型的處理有清理驗證及持久化(例如存儲到資料庫中,這部分後面會介紹存儲到MySQL中,其他的資料庫類似)。
下載器中間件(Downloader middlewares):是在引擎即下載器之間的特定鉤子(special hook),處理Downloader傳遞給引擎的Response。其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy功能(後面會介紹配置一些中間並激活,用以應對反爬蟲)。
Spider中間件(Spider middlewares):是在引擎及Spider之間的特定鉤子(special hook),處理Spider的輸入(response)和輸出(Items即Requests)。其提供了一個簡便的機制,通過插入自定義的代碼來擴展Scrapy功能。
⑸ 現在twisted不支持python35嗎
如果是在Windows下,需要額外安裝pyOpenSSL對應的版本。比如pyOpenSSL-0.13.winxp32-py2.7.msi;如果它提示沒有編譯文件,可能還需要安裝mingwg。如果是在Linux下,就很簡單,直接pipinstallscrapy就可以了,它會自動安裝好依賴包twisted。windows下用同樣這條命令就會出上面這種問題,所以要額外安裝對應的軟體。
⑹ 同時裝有python2.7 python3.5 scrapy命令怎麼在python2.7上面運行
終端scrapy命令實際上是調用了python安裝文件夾的子文件夾Scripts里的scrapy.exe(windows系統)或者scrapy.sh(linux系統)
所以如果你在終端鍵入scrapy執行的是python3.5的, 說明你的默認python是3.5
這個時候要想執行python2.7的,有幾個方法:
改變path環境變數, 設置python2.7為默認python(這個太麻煩, 不推薦)
執行scrapy命令(假設要執行scrapy startproject projectname)的時候不直接鍵入scrapy, 而是加上scrapy的絕對路徑,
windows上: C:InstallAnaconda2Scriptsscrapy startproject projectname
linux 同理
把python2.7的scrapy.exe所在的文件夾(我這里是C:InstallAnaconda2Scripts)添加到環境變數Path里, 將scrapy.exe重命名為scrapy2.exe(linux同理)
然後終端運行的時候就輸入 scrapy2 startproject projectname 即可
4. 用virtualenv創建兩個隔離的虛擬python環境, 分別執行
⑺ python3.6安裝scrapy時 需不需要安裝visual c++ 14.0
安裝python3.5,添加python和python/scripts到環境變數(裡麵包含 pip和easy_install 工具)
命令行輸入pip install scrapy 安裝scrapy,如果存在哪些模塊不存在的,通過pip install進行安裝
安裝lxml時,出現"Unable to find vcvarsall.bat"錯誤時,參考 http://blog.csdn.net/u012302488/article/details/51178541 ,在http://www.lfd.uci.e/~gohlke/pythonlibs/#lxml 下載lxml對應版本的.whl文件(或者安裝VS2008、VS2010)
命令行進入.whl文件目錄,pip install xxxxx.whl安裝lxml
再次輸入pip install scrapy 安裝scrapy,現在可以安裝成功(如果出現pip需要升級,先按照錯誤提示升級pip)
命令行進入一個目錄輸入scrapy startproject tutorial,新建一個scrapy項目
按照Scrapy Tutorial修改代碼運行Scrapy項目如果出現「ImportError : cannot import name '_win32stdio'」錯誤,參考
https://zhuanlan.hu.com/p/21335106
需要下載twisted3.6.0.zip包,將python中xxxxPython35Libsite-packages wisted目錄中的文件清空,將twisted3.6.0.zip壓縮後的文件復制到裡面
再安裝pywin32(如果通過pip安裝找不到合適的版本,可以到sourcefrog下載與操作系統和python版本對應的pywin32)
再次運行scrapy項目,最後成功!
⑻ 在python3.5.2中怎麼安裝scrapy
安裝方法
首先安裝wheel
pip install wheel11
安裝完成後驗證是否成功
wheel11
安裝成功是這樣
然後去上邊的網站下載Scrapy庫,
進到網站=>搜索』Scrapy』=>下載
把下載的.whl文件放在一個容易尋找的地址(我放在了D:\)
然後在控制台進入該地址
⑼ python中的scrapy是什麼意思a
Scrapy英文意思是刮擦
被用來命名爬蟲界知名的框架。
使用這個框架可以輕易實現常規網頁採集。也支持大型架構。升級後redis更是支持分布式。利用scrapyd更是可以發布服務。
從事爬蟲方向必學!
⑽ scrapy和python有什麼關系
Scrapy是Python開發的一個快速、高層次的web數據抓取框架,用於抓取web站點並從頁面中提取結構化的數據。Scrapy用途廣泛,可以用於數據挖掘和監測。
Scrapy吸引人的地方在於它是一個框架,任何人都可以根據需求方便的修改。它也提供了多種類型爬蟲的基類,如BaseSpider、sitemap爬蟲等。
Scrapy算得上是Python世界中最常用的爬蟲框架了,同時它也是我掌握的幾種流行語言中最好的爬蟲框架,沒有之一!我認為它也是最難學習的框架,同樣沒有之一。很多初學Scarpy的經常向我抱怨完全不清楚Scrapy該怎樣入手,即使看的是中文的文檔,也感到很難理解。我當初接觸Scrapy時也有這樣的感覺。之所以感到Scrapy難學,究其原因,是其官方文檔實在太過凌亂,又缺少實用的代碼例子,讓人看得雲里霧里,不知其所已然。雖然其文檔不良,但卻沒有遮擋住它的光輝,它依然是Python世界中目前最好用的爬蟲框架。其架構的思路、蜘蛛執行的效能,還有可擴展的能力都非常出眾,再配以Python語言的簡潔輕巧,使得爬蟲的開發事半功倍。
相關推薦:《Python基礎教程》
Scrapy的優點:
(1)提供了內置的HTTP緩存,以加速本地開發。
(2)提供了自動節演調節機制,而且具有遵守robots.txt的設置的能力。
(3)可以定義爬行深度的限制,以避免爬蟲進入死循環鏈接。
(4)會自動保留會話。
(5)執行自動HTTP基本認證。不需要明確保存狀態。
(6)可以自動填寫登錄表單。
(7)Scrapy有一個內置的中間件,可以自動設置請求中的引用(referrer)頭。
(8)支持通過3xx響應重定向,也可以通過HTML元刷新。
(9)避免被網站使用的meta重定向困住,以檢測沒有JS支持的頁面。
(10)默認使用CSS選擇器或XPath編寫解析器。
(11)可以通過Splash或任何其他技術(如Selenium)呈現JavaScript頁面。
(12)擁有強大的社區支持和豐富的插件和擴展來擴展其功能。
(13)提供了通用的蜘蛛來抓取常見的格式:站點地圖、CSV和XML。
(14)內置支持以多種格式(JSON、CSV、XML、JSON-lines)導出收集的數據並將其存在多個後端(FTP、S3、本地文件系統)中。
Scrapy框架原理
Scrapy Engine(引擎):負責Spider、ItemPipeline、Downloader、Scheler中間的通訊,信號、數據傳遞等。
Scheler(調度器):負責接收引擎發送過來的Request請求,並按照一定的方式進行整理排列,入隊,當引擎需要時,交還給引擎。
Downloader(下載器):負責下載Scrapy Engine(引擎)發送的所有Requests請求,並將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spider來處理,
Spider(爬蟲):負責處理所有Responses,從中分析提取數據,獲取Item欄位需要的數據,並將需要跟進的URL提交給引擎,再次進入Scheler(調度器),
Item Pipeline(管道):負責處理Spider中獲取到的Item,並進行進行後期處理(詳細分析、過濾、存儲等)的地方.
Downloader Middlewares(下載中間件):你可以當作是一個可以自定義擴展下載功能的組件。
Spider Middlewares(Spider中間件):你可以理解為是一個可以自定擴展和操作引擎和Spider中間通信的功能組件(比如進入Spider的Responses;和從Spider出去的Requests)
Scrapy各個組件介紹
·Scrapy Engine:
引擎負責控制數據流在系統中所有組件中流動,並在相應動作發生時觸發事件。它也是程序的入口,可以通過scrapy指令方式在命令行啟動,或普通編程方式實例化後調用start方法啟動。
·調度器(Scheler)
調度器從引擎接收爬取請求(Request)並將它們入隊,以便之後引擎請求它們時提供給引擎。一般來說,我們並不需要直接對調度器進行編程,它是由Scrapy主進程進行自動控制的。
·下載器(Down-loader)
下載器負責獲取頁面數據並提供給引擎,而後將網站的響應結果對象提供給蜘蛛(Spider)。具體點說,下載器負責處理產生最終發出的請求對象 Request 並將返回的響應生成 Response對象傳遞給蜘蛛。
·蜘蛛——Spiders
Spider是用戶編寫用於分析響應(Response)結果並從中提取Item(即獲取的Item)或額外跟進的URL的類。每個Spider負責處理一個特定(或一些)網站。
·數據管道——Item Pipeline
Item Pipeline 負責處理被 Spider 提取出來的 Item。 典型的處理有清理、驗證及持久化(例如,存取到資料庫中)。
·下載器中間件(Downloader middle-wares)
下載器中間件是在引擎及下載器之間的特定鉤子(specific hook),處理Downloader傳遞給引擎的Response。其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy的功能。
·Spider中間件(Spider middle-wares)
Spider 中間件是在引擎及 Spider 之間的特定鉤子(specific hook),處理 Spider 的輸入(Response)和輸出(Items及Requests)。其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy的功能。
從Scrapy的系統架構可見,它將整個爬網過程進行了非常具體的細分,並接管了絕大多數復雜的工作,例如,產生請求和響應對象、控制爬蟲的並發等。