Quantcast
Channel: CodeSection,代码区,Python开发技术文章_教程 - CodeSec
Viewing all articles
Browse latest Browse all 9596

PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台<四>】

$
0
0

PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台&lt;四&gt;】

大家国庆节快乐,我又来更新了~

本讲将是本专题 利用python开发微信公众平台 的最后一讲。下一讲将是新专题: 爬取“链家网”长沙小区房地产数据,并对长沙房地产信息做数据挖掘与分析 。下一专题将于微信公众号【 蚍蜉尔 】首发,欢迎大家的关注,谢谢!

题外话,我的知乎专栏:PYTHON挖掘机已经开通,大家可以关注下,以方便文章的及时提醒与查看。

本系列课程讲述“ PYTHON爬虫之旅 ”,具体大纲可参考:

【PYTHON爬虫之旅】概要目录 。

【PYTHON爬虫之旅】利用Python开发微信公众号<一>

【PYTHON爬虫之旅】利用Python开发微信公众号<二>

【PYTHON爬虫之旅】利用Python开发微信公众号<三>

0.0 本讲知识概要

了解MVC的设计模式 如何开通SAE中的mysql服务 如何写Web.py的网页模板

0.1 正文

内容并不多,我们开始吧。

0.1.0 了解MVC的设计模式

我把百科的MVC的定义粘贴过来:

MVC 全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

我的理解是,MVC就是将模型,视图和控制器三者分开,其中view相当于我们web.py里的模板。Controller相当于web.py处理业务逻辑的程序,Model相当于web.py数据库数据的存储,提取等处理程序。

无论是,web.py,还是flask,亦或是django,都是采用MVC的设计模式。理解好MVC的设计模式将对以后网页开发起到至关重要的作用。

0.1.1 如何开通SAE中的MySQL服务

首先说明,现在SAE中MySQL服务的收费较高。仅仅共享型MySQL收费价格就很高,所以慎用。本讲所用的MySQL服务也将会于数天后撤除。


PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台&lt;四&gt;】

SAE内的数据库以及缓存服务比较多,有下面几种:


PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台&lt;四&gt;】
我们就先开通共享型MySQL:
PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台&lt;四&gt;】
PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台&lt;四&gt;】
进入phpMyadmin,输入数据库名称以及字段数,点击执行,建立一个数据库:
PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台&lt;四&gt;】
比如,我们想做一个用户反馈的页面,实现方式,用户输入 advice建议的内容 ,我们就可以通过网页端展示出来。具体步骤: 建立数据库 定义存储机制,存储相关数据 制作web.py的相应路由及相关模板 网页端展示

具体过程为:

建立一个字段数为4的名称为advice的数据库。


PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台&lt;四&gt;】
PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台&lt;四&gt;】

OK,执行以后,返回到应用的代码编辑界面,由于以后会多次用到mysql操作,所以我们将数据库操作写到一个模块中,新建一个model.py(MVC里的model),写入以下代码。

# _*_ coding:utf-8 _*_ import web import web.db import sae.const import random db = web.database( dbn='mysql', host=sae.const.MYSQL_HOST, port=int(sae.const.MYSQL_PORT), user=sae.const.MYSQL_USER, passwd=sae.const.MYSQL_PASS, db=sae.const.MYSQL_DB ) def addadvice(username, advice_time, advice_content): return db.insert('advice', user = username, time = advice_time, advice_content = advice_content) def get_advice_content(): return db.select('advice', order='id')

上述代码是用python连接MySQL的具体实现。

下面我们首先需要将用户的反馈建议信息存储到MySQL数据库里,然后再在网页上显示。

首先,我们需要编辑weixinInterface.py,首先导入model模块。

import model

然后,

if content.startswith('advice'): advice_time = time.strftime('%Y-%m-%d %H:%M',time.localtime()) model.addadvice(fromUser,advice_time,content[6:].encode('utf-8')) return self.render.reply_text(fromUser,toUser,int(time.time()),u'感谢您的反馈')

这样,当你回复advice+建议的内容,我在MySQL数据库里面就能看到回复啦!


PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台&lt;四&gt;】
0.1.2 如何写Web.py的网页模板

打开index.wsgi文件,加入advice路由:

# coding: utf-8 import os import sae import web import model from weixinInterface import WeixinInterface urls = ( '/weixin','WeixinInterface', '/advice','advice', ) app_root = os.path.dirname(__file__) templates_root = os.path.join(app_root, 'templates') render = web.template.render(templates_root) class advice: def GET(self): advice_content = model.get_advice_content() return render.advice(advice_content) app = web.application(urls, globals()).wsgifunc() application = sae.create_wsgi_app(app)

接下来,我们需要编写advice的模板。这是个技术活。如果要界面美观大方,可以学习下Bootstrap,这里暂时不用,就暂时用个简单的表格+css示例下。

使用了CSS3实现表格隔行/隔列变色,用css封装一下,最后的表格形式是这样的:


PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台&lt;四&gt;】
怎么样?看起来似乎还不错哈~

advice.html的代码如下:

$def with(advice_contents) <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>【蚍蜉尔】公众号用户建议</title> <style> body{padding:0;margin:0;font:normal 12px/24px "\5FAE\8F6F\96C5\9ED1";color:#444;} table{width:500px;border:0;margin:100px auto 0;text-align:center;border-collapse:collapse;border-spacing:0;} table th{background:#0090D7;font-weight:normal;line-height:30px;font-size:14px;color:#FFF;} table tr:nth-child(odd){background:#F4F4F4;} table td:nth-child(even){color:#C00;} table tr:nth-child(5){background:#73B1E0;color:#FFF;} table tr:hover{background:#73B1E0;color:#FFF;} table td,table th{border:1px solid #EEE;} </style> </head> <body> <table> <tr> <th>序号</th> <th>时间</th> <th>建议内容</th> </tr> $for item in advice_contents: <tr> <td>$item.id</td> <td>$item.time</td> <td>$item.advice_content</td> </tr> </table> </body> </html>

具体的效果可以通过 【蚍蜉尔】公众号用户建议 查看哦~如果还有什么建议或者意见,可以关注微信公众号【蚍蜉尔】,回复 advice您的建议 ,我就能看到啦!

0.2 尾记

本节课主要在讲如何实现多图文消息的发布。涉及到较多的爬虫知识。通过本节你应该掌握:

了解MVC的设计模式 如何开通SAE中的MySQL服务 如何写Web.py的网页模板

本讲是本专题的最后一讲,当然还有很多需要讲的,比如如何开通并使用Memcached,Redis,MongoDB;如何用SAE通过短信服务定时发短信等等,由于毕竟篇幅有限,更多的空间留给大家来钻研,通过我的抛砖引玉,大家一定会做得更好。如果有什么不懂的,欢迎知乎或者微信公众号内私信我,谢谢!

下一讲将是新专题: 爬取“链家网”长沙小区房地产数据,并对长沙房地产信息做数据挖掘与分析 。本专题将于微信公众号【 蚍蜉尔 】首发,欢迎大家的关注,谢谢!

蚍蜉尔 】公众号刚开通,暂时没有多少内容,但以后会有更多惊喜哟~ 公众号回复您的暂时是微信机器人,别被微信机器人调戏了哈~

本系列教程将不定期更新,敬请关注 :)

如果喜欢,请一定记得点赞哟~ 你的赞就是我更新的动力~ o(*"g%


Viewing all articles
Browse latest Browse all 9596

Trending Articles