1.背景
一直想自己動(dòng)手寫(xiě)個(gè)web app玩玩,前幾天看了一個(gè)github的resume自動(dòng)生成的web-app,所以就動(dòng)手仿造了一個(gè)csdn的簡(jiǎn)歷生成器。結(jié)構(gòu)很簡(jiǎn)單,前端是html/css文件(這個(gè)模仿了github的那個(gè)網(wǎng)頁(yè),因?yàn)椴┲鞑惶岸耍:笈_(tái)是一個(gè)爬蟲(chóng)軟件,可以把csdn的個(gè)人信息爬下來(lái),然后顯示出來(lái),最后部署到了百度云。百度的云數(shù)據(jù)庫(kù),真是坑爹.......,我調(diào)試了半天,目前還無(wú)法insert數(shù)據(jù)。好了,先上個(gè)圖,項(xiàng)目地址http://resumecsdn.duapp.com/。 (1)起始頁(yè)面
(2)生成的簡(jiǎn)歷
2.項(xiàng)目介紹
(1)前端
前端主要就是html和css,這個(gè)我是參考別人的改的,有過(guò)代碼經(jīng)歷的人應(yīng)該都比較容易。前端和后臺(tái)的交互,主要是通過(guò)先在html里設(shè)置method,然后就可以{{{data}}這樣傳輸數(shù)據(jù)了,這個(gè)比較容易,大家在代碼中一看就明白,不多說(shuō)了。
(2)flask
flask是一個(gè)比較輕便的python web框架,博主本來(lái)打算用豆瓣那個(gè)的(豆瓣的后臺(tái)是python寫(xiě)的),但是發(fā)現(xiàn)太難,所以轉(zhuǎn)而用flask。flask的好處是很直接明了。
- @app.route('/')
- def home():
-
-
- return render_template('index.html')
-
- @app.route('/signup', methods=['POST'])
- def signup():
-
- session['message'] = request.form['message']
- return redirect(url_for('message'))
像這樣,利用app.route就可以直接獲得網(wǎng)頁(yè)路徑,render_template('index.html')就是打開(kāi)index頁(yè)面。它的文件結(jié)構(gòu)可以給大家看下,所有的html都是存放在template文件夾,然后css這些配置文件還有數(shù)據(jù)庫(kù)可以放到static文件夾。
這個(gè)框架的好處是,基本看一眼例子就可以動(dòng)手開(kāi)搞了,推薦一個(gè)網(wǎng)站:http://maximebf.com/blog/2012/10/building-websites-in-python-with-flask/
(3)crawler
介紹一下crawler文件,也就是后臺(tái)的爬蟲(chóng)文件吧。因?yàn)橐獋窝b成是瀏覽器瀏覽,所以加了個(gè)head,這樣可以避免一些反爬蟲(chóng)網(wǎng)站。剩下就是用urllib的函數(shù)加上正則匹配就比較容易搞定了。
- headers = {
- 'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
- }
- req = urllib2.Request(
- url='http://blog.csdn.net/'+name,
- headers = headers
- )
(4)部署到BAE
BAE怎么說(shuō)呢,mysql功能文檔很少,這點(diǎn)讓我很不爽。但是其他功能還是可以的,特別是支持很多python的第三方庫(kù),可以在requirements.txt里面定義。
用法:注冊(cè)一個(gè)賬號(hào),然后它會(huì)給你一個(gè)git地址,clone到本地。然后就可以修改了,當(dāng)然,改好了還得push上去,每次修改都得點(diǎn)擊“快捷發(fā)布”。
下面是一些要注意的地方:
1.首先是app.conf,url要加星號(hào)。
- handlers:
- - url : /.*
- script: __init__.py
2.然后,把需要的第三方庫(kù)加在requirements.txt里,這樣bae會(huì)自動(dòng)幫你安好。3.注意本地調(diào)試,和放到BAE的區(qū)別
本地調(diào)試運(yùn)行程序是以下語(yǔ)句__init__.py文件內(nèi),然后就可以在瀏覽器查看了
- if __name__ == '__main__':
- app.run()
放到BAE上要把本地調(diào)試的語(yǔ)句注釋掉,在__init__.py里加上:
- from bae.core.wsgi import WSGIApplication
- application = WSGIApplication(app)
4.本地調(diào)試每次調(diào)完要注意kill線程,方法是在shell里:
然后在kill掉對(duì)應(yīng)的ID號(hào)
--------------------------------------------------------------------------------------------------------------------------------------------------------
麻煩大家看的時(shí)候,給個(gè)star,擁有star100+項(xiàng)目一直是我的夢(mèng)想
/********************************
* 本文來(lái)自博客 “李博Garvin“
* 轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/buptgshengod
******************************************/
來(lái)自:http://blog.csdn.net/buptgshengod/article/details/40541949
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。