这篇文章给大家分享的是有关Python利用Django写restful api接口的示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
<强>前言强>
用Python如何写一个接口呢,首先得要有数据,可以用我们在网站上爬的数据。
大量的数据保存到数据库比较方便。我用的pymsql, pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。但目前在python3.x中,PyMySQL取代了MySQLdb。
<强> 1。连接数据库强>
#,连接数据库,需指定字符集否则可能会报的错 时间=db pymysql.connect(主机=發ocalhost",,用户=皉oot",,密码=?23“,,db=癿ysql",, charset=皍tf8mb4") cursor =, db.cursor(), #,创建一个游标对象
<强> 2。创建数据库强>
cursor.execute (“DROP  TABLE IF EXISTS meizi_meizis"), #,如果表存在则删除 ,#创建表的sql语句=,createTab “““create table meizi_meizis ( ,id int  primary key  auto_increment, ,mid varchar (10), not 空, ,title varchar (50), ,picname varchar (10), ,page_url varchar (50), ,img_url varchar (50) ,);“““ ,cursor.execute (createTab), #,执行创建数据表操作
<强> 3。爬取数据强>
def html(自我,,href,标题):=,lists []=,,meiziid  href.split (& # 39;/& # 39;) [1]=,,html  self.request (href)=,,max_span  BeautifulSoup (html.text, & # 39; lxml # 39;); (& # 39; div # 39;,, class_=& # 39; pagenavi& # 39;) .find_all(& # 39;跨度# 39;)[2].get_text () ,for page 拷贝范围(1,int (max_span), +, - 1):=,meizi , {}=,,page_url  href +, & # 39;/& # 39;, +, str(页面)=,,img_html  self.request (page_url)=,,img_url  BeautifulSoup (img_html.text, & # 39; lxml # 39;); (& # 39; div # 39;,, class_=& # 39; main-image& # 39;); (& # 39; img # 39;) [& # 39; src # 39;】=,,picname  img_url [9: 4) ,梅子[& # 39;meiziid& # 39;],=meiziid ,梅子[& # 39;标题# 39;],=,标题 ,梅子[& # 39;picname& # 39;],=picname ,梅子[& # 39;page_url& # 39;],=page_url ,梅子[& # 39;img_url& # 39;],=img_url ,lists.append(梅子),#,保存到返回数组中 ,return 列表
<强> 4。保存到数据库强>
def all_url(自我,url):=,,html  self.request (url)=,,all_a  BeautifulSoup (html.text, & # 39; lxml # 39;); (& # 39; div # 39;,, class_=& # 39;所有# 39;).find_all(& # 39;一个# 39;) ,for 指数,a 拷贝列举(all_a):=,,title  a.get_text ()=,,href  [& # 39; href # 39;】=,,lists  self.html (href,标题) ,for 小姐:拷贝列表: ,#打印(我[& # 39;meiziid& # 39;],,我[& # 39;标题# 39;],,我[& # 39;picname& # 39;],,我[& # 39;page_url& # 39;],,我[& # 39;img_url& # 39;]) ,#插入数据到数据库sql语句,% s用作字符串占位=,sql “INSERT INTO “meizi_meizis”(“中期”,“标题”,‘picname’,‘page_url’,‘img_url’),值(% s, % s % s, % s, % s)“; ,试一试: cursor.execute才能(sql,,(我[& # 39;meiziid& # 39;],,我[& # 39;标题# 39;],,我[& # 39;picname& # 39;],,我[& # 39;page_url& # 39;],,我[& # 39;img_url& # 39;))) db.commit才能() 打印才能(我[0],+,“,is success") ,除了: db.rollback才能() ,db.close(), #,关闭数据库
<强> 5。创建网络工程强>
运行我们的爬虫,很快数据库表里就有数据了。
然后开始写接口。我是通过Django + rest_framework来写的。
Django是用Python开发的一个免费开源的网络框架,可以用于快速搭建高性能,优雅的网站.Django中提供了开发网站经常用到的模块,常见的代码都为你写好了,减少重复的代码。
<强> Django目录结构强>
urls . py
网址入口,关联到对应的views.py中的一个函数(或者通用类),访问网址就对应一个函数。
views.py
处理用户发出的请求,从url。py中对应过来,通过渲染模板中的网页可以将显示内容,比如登陆后的用户名,用户请求的数据,输出到网页。
模型。py
与数据库操作相关,存入或读取数据时用到这个,当然用不到数据库的时候你可以不使用。
形式。py
表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,当然你也可以不使用。