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实现web方式logview的方法
Aug 10 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
利用Django提供的ModelForm增删改数据的方法
Jan 06 Python
python ChainMap的使用和说明详解
Jun 11 Python
python flask web服务实现更换默认端口和IP的方法
Jul 26 Python
基于python 微信小程序之获取已存在模板消息列表
Aug 05 Python
关于Python内存分配时的小秘密分享
Sep 05 Python
通过实例简单了解Python中yield的作用
Dec 11 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 Python
详细分析Python垃圾回收机制
Jul 01 Python
Python 数据可视化之Bokeh详解
Nov 02 Python
Python学习之包与模块详解
Mar 19 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(一)
2012/03/21 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
Jquery选择子控件"大于号"和" "区别介绍及使用示例
2013/06/25 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
AngularJS HTML DOM详解及示例代码
2016/08/17 Javascript
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
python批量生成条形码的示例
2020/10/10 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
KLOOK客路:发现更好玩的世界,预订独一无二的旅行体验
2016/12/16 全球购物
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
人事主管岗位职责范本
2013/12/04 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
法律专业求职信
2014/05/24 职场文书
材料成型及控制工程专业求职信
2014/06/19 职场文书
读群众路线的心得体会
2014/09/03 职场文书
乡镇党建工作总结2015
2015/05/19 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL
Python实现为PDF去除水印的示例代码
2022/04/03 Python