Scrapy豆瓣爬蟲

scrapy安裝以及簡單使用

  • 1.進入終端,輸入命令pip install scrapy 安裝模塊。安裝成功后,新建一個項目,輸入命令scrapy startproject douban ,這樣就能看到一個douban文件夾击纬,目錄結構如下:

    介紹下各個文件的作用
    scrapy.cfg:項目的配置文件
    douban/items.py:項目的items文件
    douban/pipelines.py:項目的pipelines文件
    douban/settings.py:項目的設置文件
    douban/spiders/:存儲爬蟲的目錄

明確在Item中需要爬取的數(shù)據(jù)

  • 1.抓取豆瓣電影的片名(movie_name)、導演(movie_director)钾麸、編劇(movie_writer)更振、演員(movie_actor)炕桨、上映日期(movie_date)、片長(movie_long)肯腕、電影描述(movie_description)献宫。在scrapy中,Item是用來加載抓取內(nèi)容的容器实撒,類似于python中的字典姊途。比如movie_name就像字典中的鍵,爬取到的數(shù)據(jù)就是字典中的值知态。


制作爬蟲

  • 2.1 制作爬蟲分成兩步:先爬后取捷兰,首先獲取網(wǎng)頁的所有內(nèi)容,然后取出對我們有用的部分负敏。下面寫一只爬蟲贡茅,命名為DoubanSpider.py保存在douban\spiders目錄下,代碼如下:


    name是唯一的命名其做,運行scrapy crawl douban 這里的douban就是這個name,allow_domains 是搜索的域名范圍顶考,這里的start_urls 為空,在后面的函數(shù)會進行填充庶柿。

  • 2.2 很多情況下我們是直接在start_urls 中存入的頁面url,但是這里我們爬取的鏈接有很多而且是有規(guī)律的村怪。那么解釋下start_requests 這個方法是干什么的:

   def start_requests(self):
          for url in self.start_urls:
                yield self.make_requests_from_url(url)  #可見是從start_urls中讀取鏈接秽浇,使用make_requests_from_url生產(chǎn)Request
 可見`start_requests` 是系統(tǒng)默認調(diào)用的浮庐,我們可以重寫這個函數(shù),根據(jù)需求定制自己的start_urls柬焕。豆瓣電影的url是`http://movie.douban.com/subject_search?search_text=` +`電影名`审残。這里定制了請求頭,不加請求頭發(fā)現(xiàn)訪問404錯誤
 ![](http://upload-images.jianshu.io/upload_images/4300291-53a53b5cbd377c38?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • 2.3 parse函數(shù)斑举,上面執(zhí)行了請求搅轿,回調(diào)函數(shù)即為parser。scrapy幫助我們處理Request請求富玷,會獲得請求的url網(wǎng)站的響應response,我們重寫parser函數(shù):


    在這個函數(shù)中我們獲得電影的url鏈接璧坟,使用的是xpath方法,同樣也可以使用css方法赎懦,語法可以查詢http://www.w3school.com這個網(wǎng)站雀鹃。獲得url后繼續(xù)發(fā)送Request請求,回調(diào)函數(shù)是自定義的parse_movie函數(shù)励两。

  • 2.4 在回調(diào)函數(shù)parse_movie中我們真正抓取我們要的數(shù)據(jù)黎茎,這里進入的就是電影的具體界面,使用的仍然是xpath方法当悔。作為一只爬蟲傅瞻,Spider希望將其抓取的數(shù)據(jù)存放到Item zhong ,這里定義了前面的DoubanItem對象踢代,把爬取到的內(nèi)容存入到該對象中。


    運行命令scrapy crawl douban 就能在終端看到打印出的數(shù)據(jù)

存儲內(nèi)容

  • 1.保存信息有4種方式:json,json lines,csv,xml嗅骄。假如這里用json導出胳挎,命令如下:

     scrapy crawl douban -o items.json -t json
    
-o后面是導出文件名,-t后面是導出類型
- 2.當Item在Spider中被收集之后掸读,將會被傳遞到Item Pipeline,一些組件會按照一定的順序執(zhí)行對Item處理串远。我們要編寫自己的item pipeline,每個item pipeline都是個獨立的python類,必須實現(xiàn)process_item(self, item, spider)方法儿惫。
* item(Item對象) - 被爬取的item
* spider(Spider對象) -爬取該item的spider
![](http://upload-images.jianshu.io/upload_images/4300291-db26008b29c8f8af?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    將所有的item存儲到items.json文件中澡罚,每行包含一個序列化為json格式的item,且參數(shù)ensure_ascii=False解決了json格式的中文編碼問題。
- 3.啟動一個Item Pipeline 組件肾请,你必須將它的類添加到 ITEM_PIPELINES 配置留搔,修改settings.py配置文件,加入如下,:
![](http://upload-images.jianshu.io/upload_images/4300291-93b9d42ad74b9558?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

 按照工程名.pipelines.自定義pipeline組建類名格式編寫铛铁,后面的數(shù)字通常定義在0-1000之間隔显。

- 4.至此整個豆瓣爬蟲制作完成,在終端進入目錄運行`scrapy crawl douban` 饵逐,items.json文件中就保持了我們抓取到的item括眠。內(nèi)容如下,想要多抓的話在電影文本里多加幾個電影名:
![](http://upload-images.jianshu.io/upload_images/4300291-0caf851595f523b7?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末倍权,一起剝皮案震驚了整個濱河市掷豺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌薄声,老刑警劉巖当船,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異默辨,居然都是意外死亡德频,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門缩幸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來壹置,“玉大人,你說我怎么就攤上這事表谊〕ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵铃肯,是天一觀的道長患亿。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么步藕? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任惦界,我火速辦了婚禮,結果婚禮上咙冗,老公的妹妹穿的比我還像新娘沾歪。我一直安慰自己,他們只是感情好雾消,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布灾搏。 她就那樣靜靜地躺著,像睡著了一般立润。 火紅的嫁衣襯著肌膚如雪狂窑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天桑腮,我揣著相機與錄音泉哈,去河邊找鬼。 笑死破讨,一個胖子當著我的面吹牛丛晦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播提陶,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼烫沙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了隙笆?” 一聲冷哼從身側響起锌蓄,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仲器,沒想到半個月后煤率,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仰冠,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡乏冀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了洋只。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辆沦。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖识虚,靈堂內(nèi)的尸體忽然破棺而出肢扯,到底是詐尸還是另有隱情,我是刑警寧澤担锤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布蔚晨,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏铭腕。R本人自食惡果不足惜银择,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望累舷。 院中可真熱鬧浩考,春花似錦、人聲如沸被盈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽只怎。三九已至袜瞬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間身堡,已是汗流浹背吞滞。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留盾沫,地道東北人裁赠。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像赴精,于是被迫代替她去往敵國和親佩捞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容