XHR

爬取抖音短视频改良版(无水印版)

大憨熊 提交于 2020-10-14 19:20:56
目录 使用更简单的方法 代码 优点 不足 使用方法 使用更简单的方法 在我之前的一篇博客中,我用了构造网址的方法来获取抖音短视频,但是在今天我又一次的研究抖音短视频的时候发现了一个更加简单的方法,发现我之前的分析实在是太过繁琐了,所以有写了一篇博客来记录下这个方法。( 上一篇博客 就当做是就记录下分析网页的思路吧,就不作更改了) 与上一篇博客不同的是,这个方法可以省略掉大量的分析步骤 随便打开一个抖音个人主页,我选择的是 爱奇艺体育 ,接着右键检查网页元素,点击network选项卡下的xhr选项,分析抓到的包 点到preview选项卡,点击video->download_addr->url_list 发现这下面跟着的两个网址正好是视频的网址(根本不需要构造,只是这个网址藏的有点深,需要非常耐心的寻找),打开网址查看: 提取到这个网址的时候我以为已经结束了,但是一个大佬 @金亭玉立 给我发来了一篇文章 最新版抖音(20200428)去水印原理及源码,简单的原理与面临的挑战 提醒了我一些没有想到的东西,在此表示感谢! 我们接着往下看,在下面的play_addr下面也有一个链接,这个链接下面的视频就是无水印版本的视频 ok,现在我们只要想办法提取到它就大功告成了 我这次使用的方法中用到了jsonpath模块,直接pip下载就可以了: pip install jsonpath 代码

python实现爱奇艺登陆的密码RSA加密

爷,独闯天下 提交于 2020-10-09 08:56:26
前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 加企鹅群695185429即可免费获取,资料全在群文件里。资料可以领取包括不限于Python实战演练、PDF电子文档、面试集锦、学习资料等 本期,笔者通过Python实现对大麦网近期全国演唱会数据进行爬取,通过分析,我们发现大麦网属于Python爬虫策略中“中等型”难度网站,演唱会数据封装在json文件中。因此,我们简单的通过requests、json就可以将数据爬取出来,后期通过pandas进行数据筛选并保存至Excel文件中。 1.目标网站分析 检查一下看xhr中有没有我们需要的数据。 很好,就在xhr中用json封装了数据。 2.构造相应的Request URL request url中只有一个参数变化,那就是“Page=”这个选项变了,简单了😄,一共6页,直接循环构造了。 for i in range(1,7 ): url =f ' https://search.damai.cn/searchajax.html?keyword=&cty=&ctl=%E6%BC%94%E5%94%B1%E4%BC%9A&sctl=&tsg=0&st=&et=&order=1&pageSize=30&currPage={i}&tn= ' # print(url) 3

程序员三大美德之一:快速有效检索网页数据的“懒惰”程序员指南

拈花ヽ惹草 提交于 2020-10-02 10:26:05
根据Perl编程语言的作者拉里·沃尔的说法,程序员具有三大美德:懒惰,不耐烦和傲慢。懒惰可以让你全力以赴,降低总能耗,其他人会发现你编写的省力程序很有用。 比尔盖茨的观点是:我选择让懒惰的人完成艰巨的任务,因为他可以找到完成任务的捷径。 网页抓取或许是一个相当简单的编程问题:在文档的源代码中搜索唯一标识符,提取相关数据,但我认为存在一个更“懒惰”的解决方案——更简单,更快,可以生成更多数据。 雅虎财经是财务数据做得最好的网站之一,这也让它成为金融爱好者进行网页抓取的主要目标。几乎每天都有关于StackOverflow的问题,抓取数据的人参考了雅虎财经的某种数据检索(通常是通过网络抓取)。 网页抓取问题1 网页抓取者尝试查找Facebook当前的股票价格。代码如下: import requests from bs4 importBeautifulSoup defparsePrice(): r = requests.get("https://finance.yahoo.com/quote/FB?p=FB") soup =BeautifulSoup(r.text, "lxml") price = soup.find( div , { class : My(6px) Pos(r)smartphone_Mt(6px) }).find( span ).text print(f the

不会吧,不会吧,不愧是Ajax,jQuery Ajax啊

梦想与她 提交于 2020-10-01 10:34:04
Ajax and jQuery Ajax 我们做前端的,肯定不会只满足于写一些静态网页,我们希望做到网站(与服务器)的数据交互。不得不说,现在前端的发展真是太快了,不断的更新迭代,新的技术就如同雨后春笋,需要我们具备持续的学习能力才能更好的完成工作。 本文主要介绍原生Ajax和jQuery Ajax的使用。能够实现AJAX功能的还有两种现在比较流行的技术,Axios、Fetch。 好了,废话不多说,开始进入正题。 简单说一下这四者的区别吧: Ajax: 全称Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)最早出现的发送后端请求技术,隶属于原始js中,核心使用XMLHttpRequest对象,多个请求之间如果有先后关系的话,就会出现回调地狱。 jquery Ajax: 是 jQuery 底层 AJAX 实现。简单易用的高层实现,$.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。jQuery ajax - ajax() 方法 Axios: axios不是原生JS的,需要进行安装,它不但可以在客户端使用,也可以在nodejs端使用。Axios也可以在请求和响应阶段进行拦截

推荐 48 道JavaScript基础面试题

江枫思渺然 提交于 2020-08-20 06:06:49
1、 介绍JavaScript的基本数据类型 Number、String 、Boolean 、Null、Undefined Object 是 JavaScript 中所有对象的父对象 数据封装类对象:Object、Array、Boolean、Number 和 String 其他对象:Function、Arguments、Math、Date、RegExp、Error 新类型:Symbol 2、 说说写JavaScript的基本规范? 1) 不要在同一行声明多个变量 2) 使用 ===或!==来比较true/false或者数值 3) switch必须带有default分支 4) 函数应该有返回值 5) for if else 必须使用大括号 6) 语句结束加分号 7) 命名要有意义,使用驼峰命名法 3、 jQuery使用建议 1) 尽量减少对dom元素的访问和操作 2) 尽量避免给dom元素绑定多个相同类型的事件处理函数,可以将多个相同类型事件 处理函数合并到一个处理函数,通过数据状态来处理分支 3) 尽量避免使用toggle事件 4、 Ajax使用 全称 :Asynchronous Javascript And XML 所谓异步,就是向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果它自己会根据设定进行后续操作,与此同时,页面是不会发生整页刷新的

B站的一点点东西的爬取

我的未来我决定 提交于 2020-08-20 05:42:29
B站的一些东西的爬取 吼吼吼,在B站科技区(舞蹈区)学习的时候,突然发现可不可以爬取B站的一些东西呢? just do it 1、分析网站,详情页网址构造 爬取的网址(搜索词:抖音) 可以看到,这是一页一页的翻页的,而且告诉了最后一页,这不可谓不良心网站了。而我要做的是点进去每一个视频去得到里面的内容。 也就是上面圈出来的内容了,不是吧,阿sir这随手一点就是plmm。hhh 好!观察(看)完后,进入网页检查部分,要得到每个视频的详情网址。 可以看到,这里可以得到详情页的网址,那么这里后续将会采取Xpath进行提取,但是得到的网址还不完善,所以还要构建一手网址。 具体代码如下: a = [ ] ###获取每一个视频的详细网址 for m in range ( 1 , 51 ) : ###要得到50页的所有的视频链接 res = requests . get ( 'https://search.bilibili.com/all?keyword=%E6%8A%96%E9%9F%B3&from_source=nav_search_new&page=' + str ( m ) , headers = headers ) s = BeautifulSoup ( res . text , 'lxml' ) a = a + [ 'https:' + j for j in [ i [ 'href'

Cordova 项目从 UIWebView 更换为 WKWebView

蹲街弑〆低调 提交于 2020-08-18 13:02:08
也可查看我的公开笔记: 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

了解JS压缩图片,这一篇就够了

[亡魂溺海] 提交于 2020-08-17 11:58:05
前言 公司的移动端业务需要在用户上传图片是由前端压缩图片大小,再上传到服务器,这样可以减少移动端上行流量,减少用户上传等待时长,优化用户体验。 插播一下,本文案例已整理成插件,已上传npm ,可通过 npm install js-image-compressor -D 安装使用,可以从github 下载。 JavaScript 操作压缩图片原理不难,已有成熟 API,然而在实际输出压缩后结果却总有意外,有些图片竟会越压缩越大,加之终端(手机)类型众多,有些手机压缩图片甚至变黑。 所以本文将试图解决如下问题: 弄清 Image 对象、data URL、Canvas 和 File(Blob)之间的转化关系; 图片压缩关键技巧; 超大图片压缩黑屏问题。 转化关系 在实际应用中有可能使用的情境:大多时候我们直接读取用户上传的 File 对象,读写到画布(canvas)上,利用 Canvas 的 API 进行压缩,完成压缩之后再转成 File(Blob) 对象,上传到远程图片服务器;不妨有时候我们也需要将一个 base64 字符串压缩之后再变为 base64 字符串传入到远程数据库或者再转成 File(Blob) 对象。一般的,它们有如下转化关系: 具体实现 下面将按照转化关系图中的转化方法一一实现。 file2DataUrl(file, callback) 用户通过页面标签 <input

HTML5大文件分片上传/多线程上传

别说谁变了你拦得住时间么 提交于 2020-08-16 15:39:36
最近遇见一个需要上传超大大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现。 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表格数据、上传影音文件等。如果文件体积比较大,或者网络条件不好时,上传的时间会比较长(要传输更多的报文,丢包重传的概率也更大),用户不能刷新页面,只能耐心等待请求完成。 下面从文件上传方式入手,整理大文件上传的思路,并给出了相关实例代码,由于PHP内置了比较方便的文件拆分和拼接方法,因此服务端代码使用PHP进行示例编写。 本文相关示例代码位于github上,主要参考 聊聊大文件上传 大文件切割上传 文件上传的几种方式 首先我们来看看文件上传的几种方式。 普通表单上传 使用PHP来展示常规的表单上传是一个不错的选择。首先构建文件上传的表单,并指定表单的提交内容类型为enctype="multipart/form-data",表明表单需要上传二进制数据。 然后编写index.php上传文件接收代码,使用move_uploaded_file方法即可(php大法好…) form表单上传大文件时,很容易遇见服务器超时的问题。通过xhr,前端也可以进行异步上传文件的操作,一般由两个思路。 文件编码上传 第一个思路是将文件进行编码,然后在服务端进行解码,之前写过一篇在前端实现图片压缩上传的博客

如何在Go中编写多行字符串?

五迷三道 提交于 2020-08-16 12:22:00
问题: Does Go have anything similar to Python's multiline strings: Go是否与Python的多行字符串相似? """line 1 line 2 line 3""" If not, what is the preferred way of writing strings spanning multiple lines? 如果不是,编写跨多行字符串的首选方式是什么? 解决方案: 参考一: https://stackoom.com/question/XHr2/如何在Go中编写多行字符串 参考二: https://oldbug.net/q/XHr2/How-do-you-write-multiline-strings-in-Go 来源: oschina 链接: https://my.oschina.net/u/4428122/blog/4415770