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 socket的端口扫描程序实例代码
Feb 09 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
May 25 Python
python实现飞机大战
Sep 11 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
Python闭包思想与用法浅析
Dec 27 Python
python远程连接MySQL数据库
Apr 19 Python
Python3.7 新特性之dataclass装饰器
May 27 Python
Python发展史及网络爬虫
Jun 19 Python
Pycharm新建模板默认添加个人信息的实例
Jul 15 Python
深入了解如何基于Python读写Kafka
Dec 31 Python
Python运行DLL文件的方法
Jan 17 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 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
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
JavaScript 模拟用户单击事件
2009/12/31 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
Bootstrap基本样式学习笔记之按钮(4)
2016/12/07 Javascript
js实现图片360度旋转
2017/01/22 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
Node登录权限验证token验证实现的方法示例
2020/05/25 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
Python单链表的简单实现方法
2014/09/23 Python
Python中的ceil()方法使用教程
2015/05/14 Python
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
解决python2.7 查询mysql时出现中文乱码
2016/10/09 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
python selenium 获取接口数据的实现
2020/12/07 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
2021/01/08 Python
利用CSS的Sass预处理器(框架)来制作居中效果
2016/03/10 HTML / CSS
非功能性需求都包括哪些方面
2013/10/29 面试题
公务员个人自我评价分享
2013/11/06 职场文书
优秀党员获奖感言
2014/02/18 职场文书
《在家里》教后反思
2014/03/01 职场文书
巾帼志愿者活动方案
2014/08/17 职场文书
2014年骨干教师工作总结
2014/12/19 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
道歉的话怎么说
2015/05/12 职场文书
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技