XHR

手把手教你使用Python抓取QQ音乐数据(第二弹)

别等时光非礼了梦想. 提交于 2020-08-10 23:43:53
【一、项目目标】 通过 Python爬取QQ音乐数据(一) 我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名、专辑名、播放链接。 此次我们在之前的基础上获取QQ音乐指定歌曲的歌词及前15个精彩评论。 【二、需要的库】 主要涉及的库有:requests、json、html 【三、项目实现】 1.以歌曲“泡沫”为例,查看该界面的XHR 2.通过对XHR的Size进行排序,逐个查看(参考英文含义),我们看到第一个红框内是歌曲评论,第二个框内是歌词! 3.分别查看这两条数据Headers里面Parms参数。 4.发现这几个参数可能会代表不同的歌曲,那到底是哪个呢,我们在代开另一首歌对比一下。 5.发现只有这个topid不同,其他都一样,这就代表topid代表不同歌曲的id,同理我们看一下歌词。 6、确定下来:musicid= topid = 歌曲的id,接下来我们的任务是找到这个id。 7.返回以下界面,也就是我们上一个项目的主战场。 参考上一个项目,很容易找到“id”的值就是我们要寻找的id。 所以思路确定下来:先通过input()输入歌名生成url_1找到该歌曲的“id”参数,再生成url_2获取歌词和评论。 8.代码实现:获取歌曲id,如下所示: import requests,html,json url_1 = ' https://c.y.qq.com/soso

手把手教你使用Python抓取QQ音乐数据(第二弹)

让人想犯罪 __ 提交于 2020-08-10 19:34:27
【一、项目目标】 通过 Python爬取QQ音乐数据(一) 我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名、专辑名、播放链接。 此次我们在之前的基础上获取QQ音乐指定歌曲的歌词及前15个精彩评论。 【二、需要的库】 主要涉及的库有:requests、json、html 【三、项目实现】 1.以歌曲“泡沫”为例,查看该界面的XHR 2.通过对XHR的Size进行排序,逐个查看(参考英文含义),我们看到第一个红框内是歌曲评论,第二个框内是歌词! 3.分别查看这两条数据Headers里面Parms参数。 4.发现这几个参数可能会代表不同的歌曲,那到底是哪个呢,我们在代开另一首歌对比一下。 5.发现只有这个topid不同,其他都一样,这就代表topid代表不同歌曲的id,同理我们看一下歌词。 6、确定下来:musicid= topid = 歌曲的id,接下来我们的任务是找到这个id。 7.返回以下界面,也就是我们上一个项目的主战场。 参考上一个项目,很容易找到“id”的值就是我们要寻找的id。 所以思路确定下来:先通过input()输入歌名生成url_1找到该歌曲的“id”参数,再生成url_2获取歌词和评论。 8.代码实现:获取歌曲id,如下所示: import requests,html,json url_1 = ' https://c.y.qq.com/soso

Cordova 项目从 UIWebView 更换为 WKWebView

邮差的信 提交于 2020-08-09 13:45:14
也可查看我的公开笔记: https://www.yinxiang.com/everhub/note/325e6d46-9255-45de-bad3-58689a2022a4 ITMS- 90809 : Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs. 当前 cordova-ios 最新版本 5.1.1 下一个主要版本 cordova-ios 将删除 UIWebView 代码中的所有引用。该标志也将在下一个主要版本中被删除,WKWebView 将是 Cordova 的默认 Web 视图。 一、添加 cordova-ios 平台环境 cordova platform add ios@ 5.1 . 1 --save 二、添加 WKWebView 插件 https://www.npmjs.com/package/cordova-plugin-wkwebview-engine Cordova 项目中添加 cordova-plugin-wkwebview-engine 插件(当前最新版本1.2.1) cordova plugin add cordova-plugin-wkwebview-engine config.xml 中添加配置 <platform

ajax请求@RequestBody

ぐ巨炮叔叔 提交于 2020-08-09 11:58:06
ajax请求@RequestBody ajax请求 $.ajax({ headers : { Accept: "application/json; charset=utf-8", 'token' : '9B4BF951093F1F1A40BB2DAAA30B3838' }, url: URI + '/admin/blog/add', type: 'POST', async: true, data: { "id":1, "type":1, "uname":"admin" }, timeout: 3000, dataType: 'json', beforeSend: function(xhr){}, success: function(data, textStatus, jqXHR){ console.log(data); }, error: function(xhr, textStatus){ console.log(xhr); }, complete: function(){ console.log("complete"); } }) contentType java后台请求方法类型,配合@ResponseBody注解一起使用才可以,不加@ResponseBody注解相当于按照和返回String同名jsp页面解析自然就会报错 @RequestBody只支持以下几种

前端面试基础题:Ajax原理

馋奶兔 提交于 2020-08-09 06:44:53
Ajax 的原理简单来说是在⽤户和服务器之间加了—个中间层( AJAX 引擎),通过 XmlHttpRequest 对象来向服务器发异步请求,从服务器获得数据,然后⽤ javascrip t 来操作 DOM ⽽更新⻚⾯。使⽤户操作与服务器响应异步化。这其中最关键的⼀步就是从服 务器获得请求数据 Ajax 的过程只涉及 JavaScript 、 XMLHttpRequest 和 DOM 。 XMLHttpRequest 是 aja x 的核⼼机制 /* * 1. 创建连接 * */ var xhr = null ; xhr = new XMLHttpRequest() /* * 2. 连接服务器 * */ xhr.open( ' get ' , url, true ) /* * 3. 发送请求 * */ xhr.send( null ); /* * 4. 接受请求 * */ xhr.onreadystatechange = function(){ if (xhr.readyState == 4 ){ if (xhr.status == 200 ){ success(xhr.responseText); } else { /* * false * */ fail && fail(xhr.status); } } } ajax 有那些优缺点? 优点: 通过异步模式,提升了⽤户体验.

Vue + Element UI 实现权限管理系统 前端篇(六):更换皮肤主题

烈酒焚心 提交于 2020-08-08 20:02:20
自定义主题 命令行主题工具 1.安装主题工具 首先安装「主题生成工具」,可以全局安装或者安装在当前项目下,推荐安装在项目里,方便别人 clone 项目时能直接安装依赖并启动。 yarn add element-theme --dev 2.安装chalk主题 安装白垩主题,可以从 npm 安装或者从 GitHub 拉取最新代码,这里从 npm 安装。 yarn add element-theme-chalk -D 3.初始化变量文件 主题生成工具安装成功后,如果全局安装可以在命令行里通过 et 调用工具,如果安装在当前目录下,需要通过 node_modules/.bin/et 访问到命令。执行 -i 初始化变量文件。默认输出到 element-variables.scss ,当然你可以传参数指定文件输出目录。 node_modules/.bin/et -i 执行命令 命令执行成功之后,会在根目录生成 scss文件 element-variables.scss 。 4、修改主题色 在 element-variables.scss 文件里修改 $–color-primary:#4b5f6e,即你想要的主题颜色 5、编译主题 执行主题编译命令生成主题,根目录会生成一个theme的文件夹 。 node_modules/.bin/et 6、引入自定义主题 把生成的主题按颜色改名放置 src

实现一个大文件上传和断点续传

梦想与她 提交于 2020-08-07 11:27:55
前言 这段时间面试官都挺忙的,频频出现在博客文章标题,虽然我不是特别想蹭热度,但是实在想不到好的标题了-。-,蹭蹭就蹭蹭 :) 事实上我在面试的时候确实被问到了这个问题,而且是一道在线 coding 的编程题,当时虽然思路正确,可惜最终也并不算完全答对 结束后花了一段时间整理了下思路,那么究竟该如何实现一个大文件上传,以及在上传中如何实现断点续传的功能呢? 本文将从零搭建前端和服务端,实现一个大文件上传和断点续传的 demo 前端: vue element-ui 服务端: nodejs 文章有误解的地方,欢迎指出,将在第一时间改正,有更好的实现方式希望留下你的评论 大文件上传 整体思路 前端 前端大文件上传网上的大部分文章已经给出了解决方案,核心是 利用 Blob.prototype.slice 方法,和数组的 slice 方法相似,调用的 slice 方法可以返回 原文件的某个切片 这样我们就可以根据预先设置好的切片最大数量将文件切分为一个个切片,然后借助 http 的可并发性,同时上传多个切片,这样从原本传一个大文件,变成了 同时 传多个小的文件切片,可以大大减少上传时间 另外由于是并发,传输到服务端的顺序可能会发生变化,所以我们还需要给每个切片记录顺序 服务端 服务端需要负责接受这些切片,并在接收到所有切片后 合并 切片 这里又引伸出两个问题 何时合并切片

chrome插件开发-简单的天气预报插件

懵懂的女人 提交于 2020-08-07 07:33:46
chrome天气小插件 今天在自学chrome插件开发,教程书籍为《Chrome扩展及应用开发》李喆编著,在此感谢作者李喆。 插件示例中的css样式使用的是书中的css代码,js代码加上了部分自己的代码,直接上代码 manifest.json代码 { "manifest_version": 2, "name": "天气预报", "version": "0.1", "description": "查看未来两周的天气预报", "icons": { "16": "images/weather16.png", "48": "images/weather48.png", "128": "images/weather128.png" }, "browser_action": { "default_icon": { "32": "images/weather32.png", "64": "images/weather64.png" }, "default_title":"天气预报", "default_popup":"popup.html" }, "author": "JohnConnor", "options_page": "options.html", "options_ui": { "chrome_style": true, "page": "options.html" },

Python爬虫---爬取抖音短视频

两盒软妹~` 提交于 2020-08-07 03:20:16
目录 前言 抖音爬虫制作 选定网页 分析网页 提取id构造网址 拼接数据包链接 获取视频地址 下载视频 全部代码 实现结果 待解决的问题 前言 最近一直想要写一个抖音爬虫来批量下载抖音的短视频,但是经过几天的摸索我发现了一个很严重的问题......抖音实在是难爬!从一开始的网页分析中就有着很多的坑,但是这几天的摸索也不是一无所获,我鼓捣出来了一个问题版的抖音爬虫(操作较为复杂),所以我也想通过这篇博客来记录下我分析网页的过程,也想请教一下路过大佬们,欢迎各位大佬指出问题!(这篇文章的分析比较麻烦了,但是也可以当做分析其他网页的一个参考吧,想要爬抖音的朋友们可以看这一篇的代码 改良版抖音爬虫 ) 抖音爬虫制作 选定网页 想要爬取抖音上面的视频,就要先找到可以刷小视频的地址,于是我就开始在网上寻找网页版的抖音。经过一番寻找,发现抖音根本就没有网页版的这个板块,打开的网页大多都是如下图所示提示你下载app的网页: 想要爬取小视频的内容,没有网页地址可不行。于是我又想到了另一种寻找网页的方法: 首先我打开了手机抖音,选定了一个喜欢的抖音号,使用复制链接的方法来尝试是否可以在网页中打开: 将链接粘贴到记事本中,发现它是长这个样子的 https://v.douyin.com/wGf4e1/ 将这个网址在浏览器中打开,发现这个网址可以正常显示 向下滑动,也可以看到这个账号发布的视频 ok

WEB安全入门:如何防止 CSRF 攻击?

大憨熊 提交于 2020-08-06 09:57:54
现在,我们绝大多数人都会在网上购物买东西。但是很多人都不清楚的是,很多电商网站会存在安全漏洞。乌云就通报过,国内很多家公司的网站都存在 CSRF 漏洞。如果某个网站存在这种安全漏洞的话,那么我们在购物的过程中,就很可能会被网络黑客盗刷信用卡。是不是瞬间有点「不寒而栗」 的感觉? 首先,我们需要弄清楚 CSRF 是什么。它的全称是 Cross-site request forgery ,翻译成中文的意思就是「跨站请求伪造」,这是一种对网站的恶意利用。简单而言,就是某恶意网站在我们不知情的情况下,以我们的身份在你登录的某网站上胡作非为——发消息、买东西,甚至转账...... 这种攻击模式听起来有点像跨站脚本(XSS),但 CSRF 与 XSS 非常不同,并且攻击方式几乎相左。XSS 利用站点内的信任用户,而 CSRF 则通过伪装来自受信任用户的请求来利用受信任的网站。与 XSS 攻击相比,CSRF 攻击往往很少见,因此对其进行防范的资源也相当稀少。不过,这种「受信任」的攻击模式更加难以防范,所以被认为比 XSS 更具危险性。 这个过程到底是怎样的呢?让我们看个简单而鲜活的案例。 银行网站 A,它以 GET 请求来完成银行转账的操作,如: http://www. mybank.com/Transfer.php? toBankId=11&money=1000 危险网站 B,它里面有一段