放養的小爬蟲--豆瓣電影入門級爬蟲(mongodb使用教程~)

放養的小爬蟲--豆瓣電影入門級爬蟲(mongodb使用教程~)

1

筆者聲明:只用於學習交流,不用於其餘途徑。源代碼已上傳github。githu地址:https://github.com/Erma-Wang/Spider
筆者聲明:只用於學習交流,不用於其餘途徑。源代碼已上傳github。githu地址:https://github.com/Erma-Wang/Spider
筆者聲明:只用於學習交流,不用於其餘途徑。源代碼已上傳github。githu地址:https://github.com/Erma-Wang/Spiderpython

重要的事情說三遍~~~!!!只用於學習交流,私自用於其餘途徑,後果自負!!!
github源代碼地址https://github.com/Erma-Wang/Spider(注意,本倉庫還有其餘的小爬蟲,本文章講解的是DouBanSpider···),別忘了給個star哦 ! @、@git


開篇以前~閒聊幾句~

筆者是iOS開發從業者,可是我相信不少小夥伴也和我同樣,並非Python開發者,卻對爬蟲技術(scrapy)頗感興趣兒~以前寫過一些iOS的博客,最近在寫爬蟲技術分享的博客的時候,發現不少小夥伴對爬蟲技術比對iOS興趣點來的大~這時候,我就在想,爲何叻?github

我認爲爬蟲技術基本原理就三點~下載數據~匹配數據~保存數據~,原本一件很簡單的事兒,卻有這麼多的爬蟲愛好者去研究~去探索~而且還誕生了偉大的框架scrapypyspider,可是我的認爲其是一種工具。這麼多的非python開發者對爬蟲技術(scrapy、pyspider)感興趣,我想是由於爬蟲技術屬於逆向工程吧~人們一直以來對正向的思惟,正向的發展,正向的軟件開發等等一切事物指揮若定,卻不多有人對一件事物,一件物品,一個軟件,甚至一個網站開發出來後反向對到其製做過程,製做工序,製做原料做其推導~古文說以古爲鏡,能夠知興替,我想,對一件已經制做出來的物品,推導其製做過程,比製做這件物品更來得有興趣吧~mongodb


總結幾點~

以前在上一篇博客中有些小夥伴給我了一些不錯的idea~數據庫

  • 有讀者建議我在以前的爬蟲上加上代理,這點兒,筆者仍是以不加代理的風格繼續寫爬蟲,由於畢竟加上代理我會擔憂一些很差的小夥伴拿筆者寫好的爬蟲去作了很差的事兒,請諒解~若有我的特殊需求,上github上自行fork修改~
  • 以前的JDSpider具備時效性~由於畢竟京東也不是傻子,規則會常常變動~
  • 以前有效換提出能不能抓取AJAX的url,額~對於這樣高深的技術,超出筆者能力範圍~目前爲止,惟一的辦法就是抓包工具抓包,人工手動分析~
  • 有一些idea還在研究中,好比說爬取淘寶數據~這個有難度,是真心有難度~
  • 最後,筆者所寫爬蟲技術含量並不高,只是入門級別的爬蟲,只用於爬蟲愛好者交流分享擺了~適合於爬蟲初學者,大多爲scrapy。。。

開篇

筆者在以前的博客裏寫過京東的Spider,首先很是感謝小夥伴對個人支持~在此,筆者寫了一個入門級別的小爬蟲,給一些想學scrapy可是尚未開始學習scrapy的小夥伴講解一些scrapy的一些基礎知識吧~本文雖然對於scrapy來講徹底算是入門級別,可是您應該具備必定的網頁編程基礎和網絡基礎知識。本文中主要講解mongodb的基本使用,附帶一個實戰小爬蟲~編程

仍是同樣,scrapy不作詳細解釋~有疑問,找度娘~數組

抓取目標url和目標數據item

目標url:https://movie.douban.com/top250

目標數據 item

標題:title = Field()
電影信息:movieInfo = Field()
評分:star = Field()
經典名言:quote = Field()網絡

目標網站分析與思路分析(爬蟲常規思路~)

先看看目標網站吧~是的,網上不少用豆瓣作爬蟲教程,由於比較好爬取吧~筆者在這也用豆瓣爬蟲來做爲演示~
1框架

1、抓取li標籤構建數組~

是的,和常規網站同樣一個li標籤表明一個小模塊的整合~思路先把每一個li抓取出來放入一個數組中,這也是常規思路,先看關鍵代碼吧~scrapy

實例化選擇器

selector = Selector(response)

抓取li標籤構建Movies數組

Movies = selector.xpath('//div[@class="info"]')

2、遍歷數組取出each~

for in循環取出~沒啥說的

3、選擇器匹配數據~

抓取數據~

title = eachMovie.xpath('div[@class="hd"]/a/span[@class="title"]/text()').extract()
movieInfo = eachMovie.xpath('div[@class="bd"]/p/text()').extract()
star = eachMovie.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract()
quote = eachMovie.xpath('div[@class="bd"]/p[@class="quote"]/span/text()').extract()

4、傳值給item~

熟悉MVC的小夥伴在學習scrapy的時候都應該知道~item在這裏就至關於MVC裏面的Model。

item['title'] = title
item['movieInfo'] = ';'.join(movieInfo)
item['star'] = star
item['quote'] = quote

5、翻頁~

抓取下一頁href的url,遞歸調用Request
nextLink = selector.xpath('//span[@class="next"]/link/@href').extract()
if nextLink:
nextLink = nextLink[0]
print(nextLink)
yield Request(self.url + nextLink,callback=self.parse)


Ok~數據抓取下來了,如今考慮一個問題~保存~

本博客主要講解的是mongodb和scrapy配合使用~下面看看代碼怎麼寫的吧~

首先在setting裏面做配置~

設置傳輸的管道~爲何是管道叻~筆者英語不咋滴~喜歡這麼翻譯pipeline~

ITEM_PIPELINES = ['DouBanSpider.pipelines.DoubanspiderPipeline']

設置mongodb地址~

MONGODB_HOST = '127.0.0.1'

設置端口號~也就是port~默認爲27017~

MONGODB_PORT = 27017

設置數據庫名字~

MONGODB_DBNAME = 'DouBan'

設置存放本次數據的表名~

MONGODB_DOCNAME = 'DouBanDy'


OK~配置好setting後再配置Pipeline吧~

咱們藉助pymongo這個模塊來配置Pipeline吧~導入pymongo模塊後~
只作關鍵兩步講解~

連接數據庫~

client = pymongo.MongoClient(host=host,port=port)

指向數據庫裏面要存放數據的表名~

tdb = client[dbName]

向指定的表裏添加數據~兩句關鍵代碼~

self.post = tdb[settings['MONGODB_DOCNAME']]
self.post.insert(dyInfo)


好吧~看看效果吧~

爬蟲啓動~

1

開始爬取~

1

再看看數據庫~

1


最後對mongodb的使用作個簡單的介紹~

mongodb屬於非關係型數據庫~是一個基於分佈式文件存儲的數據庫。由C++語言編寫。。。好吧~這些廢話我不在這裏說了~本身百度百科吧~我寫博客寫你能在其餘地方都能找到的理論性的知識~簡單的說說使用mongodb的安裝和使用吧~

mongodb的安裝~

網上有一大把一大把mongodb的安裝教程~本身搜索去吧~筆者是經過brew安裝的mongodb,由於筆者使用的Mac,嘗試過不少種安裝mongodb的方法都未成功~最後,嘗試了brew安裝成功~若是讀者使用的是Mac,請嘗試嘗試brew安裝吧~

啓動mongodb服務~

在控制檯輸入 mongod,這個指令是啓動mongod的服務,當出現下圖,表示成功~

啓動mongodb數據庫~

啓動mongodb服務後從新打開一個新的控制檯窗口~啓動mongodb數據庫~在新的控制檯窗口輸入mongo,這時候會出現下面的界面~表示成功~

使用Robmongo管理數據庫~

在Mac上最好用的就是Robmongo把~界面還行~基本的功能也有~

建立mongodb的連接~

建立成功後就能夠用上文中的小爬蟲對mongodb添加數據了~


小爬蟲使用小提示~

  • scrapy crawl YourSpiderName,,最後加的是爬蟲name,而不是項目名字~
  • 須要的環境本身配置,跑不起來報錯,請百度,爬蟲筆者已經親測,能夠跑~
  • 本爬蟲沒有設置代理,由於用於學習交流吧~
  • 本爬蟲已經更改請求頭裏的USER_AGENT,請改成本身的吧
  • 最後項目已經上傳到github,github源代碼地址https://github.com/Erma-Wang/Spider(注意,本倉庫還有其餘的小爬蟲,本文章講解的是JDSpider···),別忘了給個star哦@、@
  • 還要了解更多的小爬蟲的朋友們能夠關注本博,並在本博的spider中找到其餘的小爬蟲,筆者會定時更新小爬蟲的~

重要的事情再說三遍:

本文和本爬蟲只用於學習交流,不用於其餘途徑,後果自負~!~!

本文和本爬蟲只用於學習交流,不用於其餘途徑,後果自負~!~!

本文和本爬蟲只用於學習交流,不用於其餘途徑,後果自負~!~!

轉載請註明來自吃飯睡覺擼碼的博客 http://www.cnblogs.com/Erma-king/,幷包含相關連接。

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息