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中django框架通过正则搜索页面上email地址的方法
Mar 21 Python
Python中利用原始套接字进行网络编程的示例
May 04 Python
python从网络读取图片并直接进行处理的方法
May 22 Python
Google开源的Python格式化工具YAPF的安装和使用教程
May 31 Python
Python中的TCP socket写法示例
May 11 Python
python高阶爬虫实战分析
Jul 29 Python
python实现剪切功能
Jan 23 Python
Python获取Redis所有Key以及内容的方法
Feb 19 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
May 13 Python
使用PyTorch训练一个图像分类器实例
Jan 08 Python
python的列表List求均值和中位数实例
Mar 03 Python
python通过函数名调用函数的几种场景
Sep 23 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
B2K与车机的中波PK
2021/03/02 无线电
PHP CURL CURLOPT参数说明(curl_setopt)
2013/09/30 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
Laravel6.18.19如何优雅的切换发件账户
2020/06/14 PHP
Javascript Select操作大集合
2009/05/26 Javascript
跟我学习javascript的定时器
2015/11/19 Javascript
jQuery实现的AJAX简单弹出层效果代码
2015/11/26 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
jQuery查找和过滤_动力节点节点Java学院整理
2017/07/04 jQuery
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
highcharts.js数据绑定方式代码实例
2019/11/13 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
JS获取表格视图所选行号的ids过程解析
2020/02/21 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
python实现上传下载文件功能
2020/11/19 Python
python opencv 二值化 计算白色像素点的实例
2019/07/03 Python
Python实现K折交叉验证法的方法步骤
2019/07/11 Python
python 利用pyttsx3文字转语音过程详解
2019/09/25 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
Zadig&Voltaire官网:法国时装品牌
2018/01/05 全球购物
Nisbets爱尔兰:英国最大的厨房和餐饮设备供应商
2019/01/26 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
大学军训通讯稿
2014/01/13 职场文书
我们的节日端午节活动方案
2014/03/02 职场文书
新品发布会策划方案
2014/06/08 职场文书
关于环保的标语
2014/06/13 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
大学毕业论文致谢词
2015/05/14 职场文书