549
技術社區[雲棲]
Python+MongoDB 爬蟲實戰
工具準備及爬蟲搭建
Scrapy(python寫成的爬蟲框架)
在前一篇 Scrapy爬蟲入門 裏有寫到Scrapy的安裝和基本使用,他的特點是每個不同的page都自己定製一個不同的Spider,通過
scrapy crawl spidername -o file -t json
的方法運行爬蟲程序並且以json形式保存到目標文件裏(當然後麵 -o -t 兩項可以省略)。而且python代碼很少,實現很方便。簡單看下python的語法就可以輕鬆上手。
順便以Java開發者和python小白用戶的角度闡述下我對python語法的總結:
- 句末不帶分號
- if,while,for不帶大括號
- 變量不用聲明,比js聲明還簡單
- 三個主要數據結果:字典,列表,元組
- 沒有好的IDE,全靠自己聲明:包的導入要自己聲明,異常要自己聲明
- 代碼短小,給我很強烈的空虛感
MongoDB(帶上pymongo和mongo-java-driver)
很早以前就想實踐下MongoDB,早早的看過《MongoDB權威指南》,卻一直沒有機會實戰,虧得畢設可以讓我有了需求驅動。因為MongoDB以BSON的形式存儲對象,所以我覺得蠻適合存儲Scrapy的json爬取結果,由pymongo進行交互。爬取到的數據後期會交由solr搭建搜索服務,所以也裝上了java的driver看看讀取結果。
數據嚐試
以CSDN博客裏的數據練手,爬取CSDN各博客內的博文內容數據。先爬取熱門文章頁麵上的一些博主名字和url:
{ 'username' : 'xxx', 'url' : 'https://blog.csdn.net/xxx/article/list/n' }然後爬取該博主所有的文章url鏈接,再爬取每份url鏈接裏的內容,存到MongoDB裏:
{ 'user' : 'xxx', 'title' : 'xxxxx', 'tag' : ['xx', 'xx', 'xx'], 'content' : 'xxxxxxxxxxxxxxxxxxxxxxxx' }
總結
有一些技術是由需求驅動才去嚐試學習;有一些問題隻要具備一定的執行力就能發現。
MongoDB讀取性能如何?他的自動分片怎麼得以體現?自帶的js版mapreduce如何利用?
如何將Scrapy做成一種服務?python語言的各種實踐?
今後的數據會設計論文,個人主頁,這裏的CSDN博客數據隻是整條道路的鋪墊。不過對整個學習和探索過程我還是充滿期待,哈哈。
項目地址: https://github.com/zbf8441372/VerticleSearchEngine
最後更新:2017-04-03 22:30:58