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、Javascript中的闭包比较
Feb 04 Python
Pycharm学习教程(7)虚拟机VM的配置教程
May 04 Python
Python 删除整个文本中的空格,并实现按行显示
Jul 24 Python
使用python的pandas为你的股票绘制趋势图
Jun 26 Python
30秒学会30个超实用Python代码片段【收藏版】
Oct 15 Python
python set集合使用方法解析
Nov 05 Python
使用python-pptx包批量修改ppt格式的实现
Feb 14 Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
Jul 28 Python
Python中快速掌握Data Frame的常用操作
Mar 31 Python
Python数据分析之pandas读取数据
Jun 02 Python
python简单验证码识别的实现过程
Jun 20 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
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
2011/01/06 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
php中大括号作用介绍
2012/03/22 PHP
php自定义hash函数实例
2015/05/05 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
jquery tab插件制作实现代码
2010/06/22 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
javascript动态修改Li节点值的方法
2015/01/20 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
2020/02/15 Javascript
js实现时钟定时器
2020/03/26 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
django session完成状态保持的方法
2018/11/27 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
倩碧美国官网:Clinique美国
2016/07/20 全球购物
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
轻松制作精彩视频:Animoto
2018/09/19 全球购物
日本乐天官方海外转运服务:Rakuten Global Express
2018/11/30 全球购物
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
地理科学专业毕业生求职信
2013/10/15 职场文书
刘胡兰的英雄事迹材料
2014/02/11 职场文书
军训感想500字
2014/02/20 职场文书
党员干部一句话承诺
2014/05/30 职场文书
电子信息工程专业求职信
2014/06/28 职场文书
教师素质教育心得体会
2016/01/19 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle