989868A2-723E-41F2-9A47-9E413C25F7C5.png
前一篇说道爬虫,数据爬到了自然要和数据库连接还有存储,这里我在学习爬虫的时候以为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 公开对数据访问,这里就可能会涉及到数据加密,数据安全等功能,因为是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 太多了就放弃了。
37B1A984-D121-4B6C-990A-49803F432B1F.png
运行起来,就这效果了,你的每一次访问,都是自己的访问记录
都会打印到这里。
下来就是app 编写了,这里不仅仅是app 的编写,可能还有对于web 页面等一切前端的页面编写。
写到这里,我也明白了,为什么后端个别人看不上前端,因为前端对于服务端仅仅是写页面的,没有什么技术含量。这点还是可以讨论的。
网络配置
如果你是自己电脑不是在云端部署而是在自己的电脑本地部署,那就需要一个工具了,就是一个花瓶Charles 这个工具了,如果仅仅是模拟器不是真机调试,那么这个也不需要了。
模拟器.png
这样简单的app 开始他的web 服务了
1C5D3B24-65A7-473F-A8F1-10E810BD7739.png
访问记录,这里还有个问题,我还没有探索,就是多线程的问题,因为目前我就一个模拟器,没有出现多个请求不过来的情况。并发对于Flask估计也是考验。
特别是高并发。
简单总结
到这里一个app 简单简答架构,就ok,因为app是为心爱的人写的,名字起的比较中二,不过对于技术分析,这个可以忽略不计。
下一步,就是更多的方式的数据爬取了和网络优化,分层+多途径+多情况分析,但是可能不会逃离这个主干。
下一篇,异步爬去,继续。。。。。