閱讀549 返回首頁    go 技術社區[雲棲]


Python+MongoDB 爬蟲實戰

工具準備及爬蟲搭建


Scrapy(python寫成的爬蟲框架)

在前一篇 Scrapy爬蟲入門 裏有寫到Scrapy的安裝和基本使用,他的特點是每個不同的page都自己定製一個不同的Spider,通過

scrapy crawl spidername -o file -t json

的方法運行爬蟲程序並且以json形式保存到目標文件裏(當然後麵 -o -t 兩項可以省略)。而且python代碼很少,實現很方便。簡單看下python的語法就可以輕鬆上手。

順便以Java開發者和python小白用戶的角度闡述下我對python語法的總結:

  1. 句末不帶分號
  2. if,while,for不帶大括號
  3. 變量不用聲明,比js聲明還簡單
  4. 三個主要數據結果:字典,列表,元組
  5. 沒有好的IDE,全靠自己聲明:包的導入要自己聲明,異常要自己聲明
  6. 代碼短小,給我很強烈的空虛感

MongoDB(帶上pymongo和mongo-java-driver)

很早以前就想實踐下MongoDB,早早的看過《MongoDB權威指南》,卻一直沒有機會實戰,虧得畢設可以讓我有了需求驅動。因為MongoDB以BSON的形式存儲對象,所以我覺得蠻適合存儲Scrapy的json爬取結果,由pymongo進行交互。爬取到的數據後期會交由solr搭建搜索服務,所以也裝上了java的driver看看讀取結果。

java-driver的簡單操作

pymongo的簡單操作


數據嚐試

以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

  上一篇:go Android HttpClient HttpUrlConnection上傳文件
  下一篇:go Google GO與C#之間的TCP通信案例