前一篇說道爬蟲,數據爬到了自然要和數據庫連接還有存儲,這里我在學習爬蟲的時候以為get到了一個新名稱,分布式爬蟲,還沒有深研究了解的可以賜教。
數據庫
爬取到的數據放到數據庫
lass DBManager():
host = ''
port = 0
def __init__(self):
self.host = 'localhost'
self.port = 27017
print 'init db'
def get_db(self):
client = pymongo.MongoClient(host=self.host, port=self.port)
db = client['tuniu']
return db
def get_dbItemsNum(self,dbname):
db = self.get_db()
collection = db[dbname]
num = collection.find().count()
return num
return ;
def insert_data_mg(self,db, dbname, json):
collection = db[dbname]
if collection.find().count() > 500 :
collection.removeall
collection.save(json)
else:
collection.save(json)
這里的host 和port 根據我對其他項目的觀察,是要和網絡web 的定義相關的,這里我寫的本地,就沒有關聯。
MongoClient 是一切的起點,后期的增刪改查 就和我們大學學的數據庫聯系起來的
對外服務Flask
Flask 是一個web 服務框架
具體介紹:http://docs.jinkan.org/docs/flask/
就是訪問數據庫通過Flask 公開對數據訪問,這里就可能會涉及到數據加密,數據安全等功能,因為是demo 簡單了一下
@app.route('/api/v1/xia_ifanr', methods=['GET', 'POST'])
def get_list_ifanr():
db = conn.tuniu
collection = db['ifanr']
page_num = int(request.form['pageNum'])
items = collection.find().skip(page_num * 10).limit(10).sort([("index",-1)])
data = {'data': items}
return dumps(data)
開始打算做個途牛的app demo 后來發現api 太多了就放棄了。
運行起來,就這效果了,你的每一次訪問,都是自己的訪問記錄
都會打印到這里。
下來就是app 編寫了,這里不僅僅是app 的編寫,可能還有對于web 頁面等一切前端的頁面編寫。
寫到這里,我也明白了,為什么后端個別人看不上前端,因為前端對于服務端僅僅是寫頁面的,沒有什么技術含量。這點還是可以討論的。
網絡配置
如果你是自己電腦不是在云端部署而是在自己的電腦本地部署,那就需要一個工具了,就是一個花瓶Charles 這個工具了,如果僅僅是模擬器不是真機調試,那么這個也不需要了。
這樣簡單的app 開始他的web 服務了
訪問記錄,這里還有個問題,我還沒有探索,就是多線程的問題,因為目前我就一個模擬器,沒有出現多個請求不過來的情況。并發對于Flask估計也是考驗。
特別是高并發。
簡單總結
到這里一個app 簡單簡答架構,就ok,因為app是為心愛的人寫的,名字起的比較中二,不過對于技術分析,這個可以忽略不計。
下一步,就是更多的方式的數據爬取了和網絡優化,分層+多途徑+多情況分析,但是可能不會逃離這個主干。
下一篇,異步爬去,繼續。。。。。