Scrapy Web爬蟲框架 v2.1.0 源碼下載

來源:腳本之家  責任編輯:小易  

1.新建項目(Project)在空目錄下按住Shift鍵右擊,選擇“在此處打開命令窗口”,輸入一下命令:代碼如下:scrapy startproject tutorial其中,tutorial為項目名稱。可以看到將會創建一個tutorial文件夾,目錄結構如下:代碼如下:tutorial/scrapy.cfgtutorial/init_.pyitems.pypipelines.pysettings.pyspiders/init_.py下面來簡單介紹一下各個文件的作用:scrapy.cfg:項目的配置文件tutorial/:項目的Python模塊,將會從這里引用代碼tutorial/items.py:項目的items文件tutorial/pipelines.py:項目的pipelines文件tutorial/settings.py:項目的設置文件tutorial/spiders/:存儲爬蟲的目錄2.明確目標(Item)在Scrapy中,items是用來加載抓取內容的容器,有點像Python中的Dic,也就是字典,但是提供了一些額外的保護減少錯誤。一般來說,item可以用scrapy.item.Item類來創建,并且用scrapy.item.Field對象來定義屬性(可以理解成類似于ORM的映射關系)。接下來,我們開始來構建item模型(model)。首先,我們想要的內容有:名稱(name)鏈接(url)描述(description)修改tutorial目錄下的items.py文件,在原本的class后面添加我們自己的class。因為要抓dmoz.org網站的內容,所以我們可以將其命名為DmozItem:代碼如下:Define here the models for your scraped itemsSee documentation in:http://doc.scrapy.org/en/latest/topics/items.htmlfrom scrapy.item import Item,Fieldclass TutorialItem(Item):define the fields for your item here like:name=Field()passclass DmozItem(Item):title=Field()link=Field()desc=Field()剛開始看起來可能會有些看不懂,但是定義這些item能讓你用其他組件的時候知道你的 items到底是什么。可以把Item簡單的理解成封裝好的類對象。3.制作爬蟲(Spider)制作爬蟲,總體分兩步:先爬再取。也就是說,首先你要獲取整個網頁的所有內容,然后再取出其中對你有用的部分。3.1爬Spider是用戶自己編寫的類,用來從一個域(或域組)中抓取信息。他們定義了用于下載的URL列表、跟蹤鏈接的方案、解析網頁內容的方式,以此來提取items。要建立一個Spider,你必須用scrapy.spider.BaseSpider創建一個子類,并確定三個強制的屬性:name:爬蟲的識別名稱,必須是唯一的,在不同的爬蟲中你必須定義不同的名字。start_urls:爬取的URL列表。爬蟲從這里開始抓取數據,所以,第一次下載的數據將會從這些urls開始。其他子URL將會從這些起始URL中繼承性生成。parse():解析的方法,調用的時候傳入從每一個URL傳回的Response對象作為唯一參數,負責解析并匹配抓取的數據(解析為item),跟蹤更多的URL。這里可以參考寬度爬蟲教程中提及的思想來幫助理解,教程傳送:[Java]知乎下巴第5集:使用HttpClient工具包和寬度爬蟲。也就是把Url存儲下來并依此為起點逐步擴散開去,抓取所有符合條件的網頁Url存儲起來繼續爬取。下面我們來寫第一只爬蟲,命名為dmoz_spider.py,保存在tutorial\\spiders目錄下。dmoz_spider.py代碼如下:代碼如下:from scrapy.spider import Spiderclass DmozSpider(Spider):name="dmozallowed_domains=["dmoz.org"]start_urls=http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"def parse(self,response):filename=response.url.split("/")[-2]open(filename,'wb').write(response.body)allow_domains是搜索的域名范圍,也就是爬蟲的約束區域,規定爬蟲只爬取這個域名下的網頁。從parse函數可以看出,將鏈接的最后兩個地址取出作為文件名進行存儲。然后運行一下看看,在tutorial目錄下按住shift右擊,在此處打開命令窗口,輸入:代碼如下:scrapy crawl dmoz報錯了:UnicodeDecodeError:'ascii' codec can't decode byte 0xb0 in position 1:ordinal not in range(128)運行第一個Scrapy項目就報錯,真是命運多舛。應該是出了編碼問題,谷歌了一下找到了解決方案:在python的Lib\\site-packages文件夾下新建一個sitecustomize.py:代碼如下:import syssys.setdefaultencoding('gb2312')再次運行,OK,問題解決了,看一下結果:最后一句INFO:Closing spider(finished)表明爬蟲已經成功運行并且自行關閉了。包含[dmoz]的行,那對應著我們的爬蟲運行的結果。可以看到start_urls中定義的每個URL都有日志行。還記得我們的start_urls嗎?http://www.dmoz.org/Computers/Programming/Languages/Python/Bookshttp://www.dmoz.org/Computers/Programming/Languages/Python/Resources因為這些URL是起始頁面,所以他們沒有引用(referrers),所以在它們的每行末尾你會看到(referer:)。在parse 方法的作用下,兩個文件被創建:分別是 Books 和 Resources,這兩個文件中有URL的頁面內容。那么在剛剛的電閃雷鳴之中到底發生了什么呢?首先,Scrapy為爬蟲的 start_urls屬性中的每個URL創建了一個 scrapy.http.Request 對象,并將爬蟲的parse 方法指定為回調函數。然后,這些 Request被調度并執行,之后通過parse()方法返回scrapy.http.Response對象,并反饋給爬蟲。3.2取爬取整個網頁完畢,接下來的就是的取過程了。光存儲一整個網頁還是不夠用的。在基礎的爬蟲里,這一步可以用正則表達式來抓。在Scrapy里,使用一種叫做 XPath selectors的機制,它基于 XPath表達式。如果你想了解更多selectors和其他機制你可以查閱資料:點我點我這是一些XPath表達式的例子和他們的含義html/head/title:選擇HTML文檔元素下面的標簽。html/head/title/text():選擇前面提到的元素下面的文本內容td:選擇所有元素div[@class="mine"]:選擇所有包含 class="mine"屬性的div 標簽元素以上只是幾個使用XPath的簡單例子,但是實際上XPath非常強大。可以參照W3C教程:點我點我。為了方便使用XPaths,Scrapy提供XPathSelector 類,有兩種可以選擇,HtmlXPathSelector(HTML數據解析)和XmlXPathSelector(XML數據解析)。必須通過一個 Response 對象對他們進行實例化操作。你會發現Selector對象展示了文檔的節點結構。因此,第一個實例化的selector必與根節點或者是整個目錄有關。在Scrapy里面,Selectors 有四種基礎的方法(點擊查看API文檔):xpath():返回一系列的selectors,每一個select表示一個xpath參數表達式選擇的節點css():返回一系列的selectors,每一個select表示一個css參數表達式選擇的節點extract():返回一個unicode字符串,為選中的數據re():返回一串一個unicode字符串,為使用正則表達式抓取出來的內容3.3xpath實驗下面我們在Shell里面嘗試一下Selector的用法。實驗的網址:http://www.dmoz.org/Computers/Programming/Languages/Python/Books/熟悉完了實驗的小白鼠,接下來就是用Shell爬取網頁了。進入到項目的頂層目錄,也就是第一層tutorial文件夾下,在cmd中輸入:代碼如下:scrapy shell http://www.dmoz.org/Computers/Programming/Languages/Python/Books/回車后可以看到如下的內容:在Shell載入后,你將獲得response回應,存儲在本地變量 response中。所以如果你輸入response.body,你將會看到response的body部分,也就是抓取到的頁面內容:或者輸入response.headers 來查看它的 header部分:現在就像是一大堆沙子握在手里,里面藏著我們想要的金子,所以下一步,就是用篩子搖兩下,把雜質出去,選出關鍵的內容。selector就是這樣一個篩子。在舊的版本中,Shell實例化兩種selectors,一個是解析HTML的 hxs 變量,一個是解析XML 的 xxs 變量。而現在的Shell為我們準備好的selector對象,sel,可以根據返回的數據類型自動選擇最佳的解析方案(XML orHTML)。然后我們來搗弄一下!要徹底搞清楚這個問題,首先先要知道,抓到的頁面到底是個什么樣子。比如,我們要抓取網頁的標題,也就是這個標簽:可以輸入:代碼如下:sel.xpath('/title')結果就是:這樣就能把這個標簽取出來了,用extract()和text()還可以進一步做處理。備注:簡單的羅列一下有用的xpath路徑表達式:表達式 描述nodename 選取此節點的所有子節點。從根節點選取。從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置。選取當前節點。選取當前節點的父節點。選取屬性。全部的實驗結果如下,In[i]表示第i次實驗的輸入,Out[i]表示第i次結果的輸出(建議大家參照:W3C教程):代碼如下:In[1]:sel.xpath('/title')Out[1]:[<Selector xpath='//title' data=u'<title>Open Directory-Computers:Progr'>]In[2]:sel.xpath('/title').extract()Out[2]:[u'<title>Open Directory-Computers:Programming:Languages:Python:Books</title>']In[3]:sel.xpath('/title/text()')Out[3]:[()' data=u'Open Directory-Computers:Programming:'>]In[4]:sel.xpath('/title/text()').extract()Out[4]:[u'Open Directory-Computers:Programming:Languages:Python:Books']In[5]:sel.xpath('/title/text()').re('(\\w+):')Out[5]:[u'Computers',u'Programming',u'Languages',u'Python']當然title這個標簽對我們來說沒有太多的價值,下面我們就來真正抓取一些有意義的東西。使用火狐的審查元素我們可以清楚地看到,我們需要的東西如下:我們可以用如下代碼來抓取這個標簽:代碼如下:sel.xpath('/ul/li')從標簽中,可以這樣獲取網站的描述:代碼如下:sel.xpath('/ul/li/text()').extract()可以這樣獲取網站的標題:代碼如下:sel.xpath('/ul/li/a/text()').extract()可以這樣獲取網站的超鏈接:代碼如下:sel.xpath('/ul/li/a/href').extract()當然,前面的這些例子是直接獲取屬性的方法。我們注意到xpath返回了一個對象列表,那么我們也可以直接調用這個列表中對象的屬性挖掘更深的節點(參考:Nesting ..www.13333515.buzz防采集請勿采集本網。

源碼大小:1.23MB 源碼語言:英文軟件 源碼類型:國外軟件 源碼授權:免費軟件 更新時間:2020-04-27 15:04:45 源碼類別:其它源碼 源碼官網: 官方網址 網友評分:源碼評分 應用平臺:Windows平臺

Scrapy 是一套基于基于Twisted的異步處理框架,純python實現的爬蟲框架,用戶只需要定制開發幾個模塊就可以輕松的實現一個爬蟲,用來抓取網頁內容以及各種圖片,非常之方便。

有些人問,開發網絡爬蟲應該選擇Nutch、Crawler4j、WebMagic、scrapy、WebCollector還是其他的?這里按照我的經驗隨便扯淡一下: 上面說的爬蟲,基本可以分3類: 1.分布式爬蟲:Nutch 2.JAVA單機

創造一個項目 在你要抓取之前,首先要建立一個新的Scrapy項目。然后進去你的存放代碼目錄,執行如下命令。1 scrapy startproject tutorial 它將會創建如下的向導目錄: 復制代碼 代碼如下: tutorial

下載地址如下:

爬蟲框架中比較好用的是 Scrapy 和PySpider。pyspider上手更簡單,操作更加簡便,因為它增加了 WEB 界面,寫爬蟲迅速,集成了phantomjs,可以用來抓取js渲染的頁面。Scrapy自定義程度高,比

而且如果你試圖通過對Nutch進行二次開發,來使得它適用于精抽取的業務,基本上就要破壞Nutch的框架,把Nutch改的面目全非,有修改Nutch的能力,真的不如自己重新寫一個分布式爬蟲框架了。2)Nutch依賴

四五互聯移動下載

其最初是為了頁面抓取(更確切來說,網絡抓取)所設計的,也可以應用在獲取API所返回的數據(例如 Amazon Associates Web Services)或者通用的網絡爬蟲。Scrapy用途廣泛,可以用于數據挖掘、監測和自動化測試

群英網絡電信下載

巨牛網絡電信下載

創夢網絡電信下載

酷云中國網通下載

億恩科技電信下載

萬達網絡電信下載

徐州楓信網通下載

360集群電信下載

酷云中國電信下載

云彩網絡雙線下載

騰正科技電信下載

微子網絡電信下載

對于規模小、爬取數據量小、對爬取速度不敏感的爬蟲程序,使用 Requests 能輕松搞定。這些爬蟲程序主要功能是爬取網頁、玩轉網頁。如果我們需要爬取網站以及系列網站,要求爬蟲具備爬取失敗能復盤、爬取速度較高等特點。很顯然 Requests 不能完全滿足我們的需求。因此,需要一功能更加強大的第三方爬蟲框架庫—ScrapyHTML,XML源數據 選擇及提取 的內置支持提供了一系列在spider之間共享的可復用的過濾器(即 Item Loaders),對智能處理爬取數據提供了內置支持。通過 feed導出 提供了多格式(JSON、CSV、XML),多存儲后端(FTP、S3、本地文件系統)的內置支持提供了media pipeline,可以 自動下載 爬取到的數據中的圖片(或者其他資源)。高擴展性。您可以通過使用 signals,設計好的API(中間件,extensions,pipelines)來定制實現您的功能。內置的中間件及擴展為下列功能提供了支持:cookies and session 處理HTTP 壓縮HTTP 認證HTTP 緩存user-agent模擬robots.txt爬取深度限制健壯的編碼支持和自動識別,用于處理外文、非標準和錯誤編碼問題針對多爬蟲下性能評估、失敗檢測,提供了可擴展的 狀態收集工具。內置 Web service,使您可以監視及控制您的機器內容來自www.13333515.buzz請勿采集。


  • 本文相關:
  • 如何快速學習爬蟲框架Scrapy
  • 如何使用Scrapy框架實現網絡爬蟲
  • python除了用scrapy框架做網絡爬蟲還有什么其他的框架
  • python scrapy框架爬蟲的問題
  • 用web.py框架寫一個爬蟲平臺的授權機制
  • 怎么樣使用Python的Scrapy爬蟲框架
  • python爬蟲框架哪個好用?
  • 開源爬蟲框架各有什么優缺點
  • scrapy 爬蟲怎么在程序里把爬蟲停止
  • 在scrapy框架下用python爬蟲的問題!
  • 網站首頁源碼下載asp源碼php源碼.net源碼jsp源碼軟件開發腳本下載js框架網站地圖網頁游戲黑客源碼數據庫類其它源碼整站系統博客程序留言聊天企業網站新聞文章ajax相關搜索鏈接文件管理交友會員上傳下載投票調查框架模板整站系統新聞文章留言聊天博客系統賀卡圖片ajax相關文件管理問答系統社區論壇上傳下載整站系統控件組件新聞文章主機域名計數統計小偷采集電子商務學校班級 社區論壇上傳下載投票調查blog程序留言聊天整站系統社區論壇上傳下載投票調查數據管理jsp其它c#源碼易語言源碼delphi源碼vb源碼java源碼其它菜單導航tab標簽焦 點 圖在線客服css特效相冊代碼flash特效批處理其它jqueryextjsprototypemootoolsajax/javascript其它框架主頁源碼下載其它源碼最新黑人抬棺正在邀請您語音通話html網頁源碼(整蠱必備)2020最新淘寶京東自動搶單系統源碼v8版本(全開源帶視頻教程)鴻鵠智能云cms站群系統源碼 v1.2.2飛天素材網后臺管理框架模板 v1.0在線生成抽象話的網頁源碼scrapy爬蟲框架ckplayer 超酷視頻播放器(支持flv,f4v,mp4,rtmp)vx bulid2020.ckplayer 超酷視頻播放器(支持flv,f4v,mp4,rtmp)vx bulid2020.下載my97日期控件 datepicker 4.1 正式版my97日期控件 datepicker 4.1 正式版下載精美淘寶客單頁面 zblog模板 v1.0 精美淘寶客單頁面 zblog模板 v1.0 下載 蝙蝠在線考試系統源碼 v2.2.6 蝙蝠在線考試系統源碼 v2.2.6下載qvod快播電影插件 for discuz 7.0qvod快播電影插件 for discuz 7.0下載jquery v3.4.1 免費版jquery v3.4.1 免費版下載jquery easyui v1.9.0jquery easyui v1.9.0下載網頁播放器_支持lrc歌詞同步及列表拖動的網頁mp3播放器源碼網頁播放器_支持lrc歌詞同步及列表拖動的網頁mp3播放器源碼下載cairo 1.16.0 開源2d向量圖形繪圖庫cairo 1.16.0 開源2d向量圖形繪圖庫下載找不到分享碼?最新黑人抬棺正在邀請您語音通話html網頁源碼(整蠱必備)2020最新淘寶京東自動搶單系統源碼v8版本(全開源帶視頻教程)鴻鵠智能云cms站群系統源碼 v1.2.2飛天素材網后臺管理框架模板 v1.0在線生成抽象話的網頁源碼最新運營版雙端影視app白菜,番茄香蕉lulube影視app原生雙端apicloud非黃瓜直播盒子html象棋游戲源碼o泡易支付免授權源碼 附當面支付教程警用車輛監控系統后臺管理模板 v1.0經典藍白色搭配的飛天后臺管理模板 v1.0分享碼的獲取方法迅雷winrar v5微信小程序androidasp源碼生活購物php源碼asp.net源碼jsp源碼軟件開發移動開發網頁游戲黑客源碼數據庫類網頁編輯器其它源碼scrapy web爬蟲框架 v2.1.0最新黑人抬棺正在邀請您語音通話html網頁源碼(整蠱必備)2020最新淘寶京東自動搶單系統源碼v8版本(全開源帶視頻教程)ant design(阿里前端設計語言/react框架實現) v4.1.1 官方版鴻鵠智能云cms站群系統源碼 v1.2.2飛天素材網后臺管理框架模板 v1.0ruby 動態編程語言 v2.7.1etcd (key/value 存儲系統) v3.4.6在線生成抽象話的網頁源碼ckplayer 超酷視頻播放器(支持flv,f4v,mp4,rtmp)vx bulid2020.chrome
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.13333515.buzz All Rights Reserved
    3排列五开奖结果