python基于爬虫+django,打造个性化API接口


Posted in Python onJanuary 21, 2021

简述

今天也是同事在做微信小程序的开发,需要音乐接口的测试,可是用网易云的开放接口比较麻烦,也不能进行测试,这里也是和我说了一下,所以就用爬虫写了个简单网易云歌曲URL的爬虫,把数据存入mysql数据库,再利用django封装装了一个简单的API接口,给同事测试使用。

原理

创建django项目,做好基础的配置,在views里写两个方法,一个是从mysql数据库中查数据然后封装成API,一个是爬虫方法,数据扒下来以后,通过django的ORM把数据插入到mysql数据库中。
这里的路由也是对应两个,一个是爬虫的请求路由(就是运行路由),一个是接口路由,MODEL层里也是为了方便,就设了两个字段,一个是歌曲名称,一个是URL地址。

代码如下

views文件代码

from django.shortcuts import render,HttpResponse
import requests
from lxml import etree
from .models import Api
# Create your views here.
def api_wy(request):
  api = Api.objects.all()
  return render(request, "index.html",locals())

def pc(request):
  url = 'https://music.163.com/discover/toplist?id=3779629'
  headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'
  }
  data = requests.get(url=url, headers=headers)
  html = etree.HTML(data.text)
  music_list = html.xpath('//ul[@class="f-hide"]/li/a')

  music_lis = [] # 存放歌曲信息
  for music in music_list:
    music_name = music.xpath('./text()')[0] # 获取歌曲名称
    music_id_all = music.xpath('./@href')[0] # 获取a标签内容
    music_id = music_id_all.split('=')[-1] # 将a标签内容进行数据清洗,提取歌曲的id
    download_music = music_name + ' ' + f'http://music.163.com/song/media/outer/url?id={music_id}.mp3' # 将歌曲名称和url进行拼接
    music_lis.append(download_music)
    print(download_music)

  for url in music_lis:
    try:
      url_name = url.split(' ')[0] # 获取名称
      url_music = url.split(' ')[1] # 获取url
      Api.objects.create(name=url_name,url=url_music)
      print("正在插入数据")
    except:
      print("charushibai")
  return HttpResponse("正在下载")

URL路由文件

from django.contrib import admin
from django.urls import path
from api.views import api_wy,pc

urlpatterns = [
  path('admin/', admin.site.urls),
  path('api/',api_wy),
  path("pc/",pc),
]

Models层面

from django.db import models

# Create your models here.
class Api(models.Model):
  name = models.CharField('歌曲名称', max_length=100)
  url = models.CharField("歌曲地址",max_length=300)

  class Meta:
    verbose_name = '歌曲API'
    verbose_name_plural = verbose_name

  def __str__(self):
    return self.name

python基于爬虫+django,打造个性化API接口

其他的也就没什么可说的了,也是一个比较简单的测试需求,就是为了省点事情才弄得
好了,今天就到这了,拜拜

以上就是python基于爬虫+django,打造个性化API接口的详细内容,更多关于python api接口的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
在Python中使用next()方法操作文件的教程
May 24 Python
python实现线程池的方法
Jun 30 Python
Linux RedHat下安装Python2.7开发环境
May 20 Python
python实现验证码识别功能
Jun 07 Python
python反编译学习之字节码详解
May 19 Python
python RC4加密操作示例【测试可用】
Sep 26 Python
Python中无限循环需要什么条件
May 27 Python
Python中Selenium库使用教程详解
Jul 23 Python
PyCharm最新激活码(2020/10/27全网最新)
Oct 27 Python
Python文件名匹配与文件复制的实现
Dec 11 Python
基于Python实现一个春节倒计时脚本
Jan 22 Python
python 学习GCN图卷积神经网络
May 11 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 #Python
python 制作网站筛选工具(附源码)
Jan 21 #Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 #Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 21 #Python
python使用scapy模块实现ARP扫描的过程
Jan 21 #Python
Python3利用scapy局域网实现自动多线程arp扫描功能
Jan 21 #Python
Pandas直接读取sql脚本的方法
Jan 21 #Python
You might like
咖啡的种类和口感
2021/03/03 新手入门
在Windows版的PHP中使用ADO
2006/10/09 PHP
Apache2 httpd.conf 中文版
2006/11/17 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
jQuery中绑定事件bind() on() live() one()的异同
2017/02/23 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
js如何实现元素曝光上报
2019/08/07 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
[00:11]战神迅矛
2019/03/06 DOTA
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
python实现图片变亮或者变暗的方法
2015/06/01 Python
python实现聊天小程序
2018/03/13 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
Java面试笔试题大全
2016/11/23 面试题
个人自我剖析材料
2014/02/07 职场文书
2015年保管员工作总结
2015/04/30 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
病假证明模板
2015/06/19 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android