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 相关文章推荐
基于Django的ModelForm组件(详解)
Dec 07 Python
Python基于socket模块实现UDP通信功能示例
Apr 10 Python
python3学习之Splash的安装与实例教程
Jul 09 Python
python中yield的用法详解——最简单,最清晰的解释
Apr 04 Python
Python使用itchat 功能分析微信好友性别和位置
Aug 05 Python
wxpython+pymysql实现用户登陆功能
Nov 19 Python
Python字符串的修改方法实例
Dec 19 Python
150行python代码实现贪吃蛇游戏
Apr 24 Python
使用keras内置的模型进行图片预测实例
Jun 17 Python
Python判断字符串是否为合法标示符操作
Sep 03 Python
如何利用python 读取配置文件
Jan 06 Python
django注册用邮箱发送验证码的实现
Apr 18 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或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
PHP中文编码小技巧
2014/12/25 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
2016/05/05 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
原生微信小程序开发中 redux 的使用详解
2021/02/18 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
深入解析Python的Tornado框架中内置的模板引擎
2016/07/11 Python
python导入时小括号大作用
2017/01/10 Python
python 通过视频url获取视频的宽高方式
2019/12/10 Python
Pytorch DataLoader 变长数据处理方式
2020/01/08 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
法学毕业生自我鉴定
2013/11/08 职场文书
生产厂长岗位职责
2014/02/21 职场文书
企业精细化管理实施方案
2014/03/23 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
师范大学生求职信
2014/06/13 职场文书
经典演讲稿开场白
2014/08/25 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
学校教学管理制度
2015/08/06 职场文书
Java Spring读取和存储详细操作
2022/08/05 Java/Android