最近小编一直苦心研究,怎么给大家发放更多的资料和资源链接。大家都知道,百度云的分享链接是很容易被和谐的,群里除了分享链接外,就是各种抱怨 “怎么又失效了”,“又和谐了...”。

需求:

1、爬取微信群里的百度云分享链接

2、将资源转存到自己的网盘

涉及:

1、正则表达式

2、如何分析cookie和api

3、selenium(webdriver)

本篇文章目录:

1.、爬取微信群聊信息里的网盘资源

2、寻找并分析百度云的转存api

3、爬取shareid、from、filelist,发送请求转存到网盘

4、完整代码

5、参考

爬取微信群聊信息里的网盘资源

爬取微信群聊信息可以用微信网页版的api,这里推荐一个高度封装,使用简单的工具:wxpy: 用 Python 玩微信

这是个不错的工具,可以实现网页版微信的所有功能,之前小编利用它还实现了机器人聊天功能,自己的个人账号华丽转变 微软小冰 。虽然微软还没有公开小冰的 api ,不过我们完全可以利用这个工具的转发功能来实现,思路很简单,微信上领养一个小冰,把别人说的话转发给小冰,再把小冰说的话转发回去。

扯远了,总之利用这个工具,就可以对微信群聊里的信息进行监听,接着就是利用正则表达式把网盘链接抓取出来。具体的代码我就不贴了,使用起来很简单。

寻找并分析百度云的转存api

这个部分才是我们的重点,首先你得有一个百度云盘的账号,然后登录,用浏览器(这里用火狐浏览器做示范)打开一个分享链接。F12打开控制台进行抓包。手动进行转存操作:全选文件->保存到网盘->选择路径->确定。点击【确定】前建议先清空一下抓包记录,这样可以精确定位到转存的api,这就是我们中学时学到的【控制变量法】2333。

可以看到上图中抓到了一个带有 “transfer” 单词的 post 请求,这就是我们要找的转存(transfer)api 。接下来很关键,就是分析它的请求头和请求参数,以便用代码模拟。

点击它,再点击右边的【Cookies】就可以看到请求头里的 cookie 情况。

cookie分析:

因为转存是登录后的操作,所以需要模拟登录状态,将与登录有关的 cookie 设置在请求头里。我们继续使用【控制变量法】,先将浏览器里关于百度的 cookie 全部删除(在右上角的设置里面,点击【隐私】,移除cookies。具体做法自己百度吧。)

然后登录,右上角进入浏览器设置->隐私->移除cookie,搜索 "bai" 观察 cookie 。这是所有跟百度相关的 cookie ,一个个删除,删一个刷新一次百度的页面,直到删除了 BDUSS ,刷新后登录退出了,所以得出结论,它就是与登录状态有关的 cookie

同理,删除掉 STOKEN 后,进行转存操作会提示重新登录。所以,这两个就是转存操作所必须带上的 cookie 。

弄清楚了 cookie 的情况,可以像下面这样构造请求头。

除了上面说到的两个 cookie ,其他的请求头参数可以参照手动转存时抓包的请求头。这两个 cookie 预留出来做参数的原因是 cookie 都是有生存周期的,过期了需要更新,不同的账号登录也有不同的 cookie 。

参数分析:

接下来分析参数,点击【Cookies】右边的【Params】查看参数情况。如下:

上面的query string(也就是?后跟的参数)里,除了框起来的shareid、from、bdstoken需要我们填写以外,其他的都可以不变,模拟请求的时候直接抄下来。

前两个与分享的资源有关,bdstoken与登录的账号有关。下面的form data里的两个参数分别是资源在分享用户的网盘的所在目录和刚刚我们点击保存指定的目录。

所以,需要我们另外填写的参数为:shareid、from、bdstoken、filelist 和 path,bdstoken 可以手动转存抓包找到,path 根据你的需要自己定义,前提是你的网盘里有这个路径。其他三个需要从分享链接里爬取,这个将在后面的【爬取shareid、from、filelist,发送请求转存到网盘】部分中进行讲解。

搞清楚了参数的问题,可以像下面这样构造转存请求的 url 。

以上面这个资源链接为例,我们先用浏览器手动访问,F12 打开控制台先分析一下源码,看看我们要的资源信息在什么地方。控制台有搜索功能,直接搜 “shareid”。

定位到4个shareid,前三个与该资源无关,是其他分享资源,最后一个定位到该 html 文件的最后一个标签块里。双击后可以看到格式化后的 js 代码,可以发现我们要的信息全都在里边。如下节选:

可以看到这两行

yunData.SHARE_ID = "3927175953";

yunData.SHARE_UK = "140959320"; // 经过对比,这就是我们要的 "from"

yunData.PATH 只指向了一个路径信息,完整的 filelist 可以从 yunData.FILEINFO 里提取,它是一个 json ,list 里的信息是Unicode编码的,所以在控制台看不到中文,用Python代码访问并获取输出一下就可以了。

直接用request请求会收获 404 错误,可能是需要构造请求头参数,不能直接请求,这里博主为了节省时间,直接用selenium的webdriver来get了两次,就收到了返回信息。第一次get没有任何 cookie ,但是baidu 会给你返回一个BAIDUID ,在第二次 get 就可以正常访问了。

yunData.FILEINFO 结构如下,你可以将它复制粘贴到json.cn里,可以看得更清晰。

清楚了这三个参数的位置,我们就可以用正则表达式进行提取了。代码如下:

写在最后

喜欢此篇文章或觉得这篇文章对你有帮助的读者可以点播关注或者转发,加小编Python学习群:832339352即可获得小编自己整理的一份2018最新的Python资料和0基础入门教程,欢迎初学和进阶中的小伙伴

python微信开发实例 pdf 百度网盘_用python看女神微信里的百度云资源有啥?相关推荐

  1. 乐高解魔方机器人编程百度网盘_砍人快乐 喜剧 / 惊悚 / 恐怖 网盘资源目录搭建...

    ▲点击蓝色"网盘扩容" 每天推荐一部电影 v:xna2022 <砍人快乐> 剧情: 失明的图书管理员.沮丧的板球运动员和孤独的心理医生各自都在寻求惩罚和解脱,他们的生活 ...

  2. Android盒子看百度云,【沙发管家】智能电视和电视盒子如何使用百度网盘的方法!看你想看的片子!...

    原标题:[沙发管家]智能电视和电视盒子如何使用百度网盘的方法!看你想看的片子! 很多小伙伴把重要的视频资料放到了百度网盘里,想在智能电视或者电视盒子上观看.不过百度网盘没有TV版本很是纠结,不过小伙伴 ...

  3. python 数据分析 百度网盘_[百度网盘]利用Python进行数据分析(Python For Data Analysis中文版).pdf - Jan-My31的博客 - 磁力点点...

    利用Python进行数据分析(Python For Data Analysis中文版).pdf - Jan-My31的博客 2018-5-27 · 链接:https://pan.baidu.com/s ...

  4. 大话存储pdf 百度网盘_学用系列亲身体验百度网盘内测在线文档,有遗憾也有期待...

    随着阿里系的Teambition网盘上线进入倒计时,百度网盘也终于开始发力,除了vip用户扩容11TB的豪举之外,另一个亮点就是上线了内测在线文档功能.胖胖老师也第一手获得了内测资格,今天就和大家分享 ...

  5. python百度网盘_百度网盘突然大调整,网友炸了..

    点击上方 "数据科学杂谈"关注公众号和我一起提升 然后点击右上角三个点,设为"星标",即使获取更多知识 来源:不正经程序员 转自:不正经程序员 近日,百度网盘在 ...

  6. python进阶训练营百度网盘_(在线观看)【完结】私域流量实战训练营(百度网盘分享下载)...

    今日推荐(在线观看)[完结]私域流量实战训练营(百度网盘分享下载)对  (在线观看)[完结]私域流量实战训练营(百度网盘分享下载)感兴趣的朋友可以学习参考 (有需要的找我,你就可以拥有这个课程)需要此 ...

  7. 大话存储pdf 百度网盘_学用系列|亲身体验百度网盘内测在线文档,有遗憾也有期待...

    随着阿里系的Teambition网盘上线进入倒计时,百度网盘也终于开始发力,除了vip用户扩容11TB的豪举之外,另一个亮点就是上线了内测在线文档功能.胖胖老师也第一手获得了内测资格,今天就和大家分享 ...

  8. python登陆百度网盘_百度网盘命令行版本bypy

    表白:黑白圣堂血天使,天剑鬼刀阿修罗. 讲解对象:/百度网盘命令行版本bypy作者:融水公子 rsgz百度网盘教程 http://www.rsgz.top/post/399.html为了大家可以在co ...

  9. 数据科学家访谈录 百度网盘_您应该在数据科学访谈中向THEM提问。

    数据科学家访谈录 百度网盘 A quick search on Medium with the keywords "Data Science Interview" resulted ...

最新文章

  1. (转载)Linux新增磁盘、分区、格式化和自动挂载
  2. 3-自定义BI启动版是否隐藏CMS名称
  3. 局部特征(local feature)
  4. 鸟哥的Linux私房菜(服务器)- 主机基本安全之一:限制 Linux 对外连线的端口
  5. 【greenplum】 gp的安装
  6. 8乘8led点阵显示数字_51单片机程序设计:[7]88点阵显示汉字
  7. C#算法设计查找篇之05-二叉树查找
  8. Java 并发编程ReentrantLock--源码解析(底层AQS实现)
  9. mysql 42
  10. 敏捷测试与传统测试的区别
  11. SQL Server 2005 中行号的显示,分页
  12. 简易计算机系统综合设计设计报告(VHDL)
  13. vue3 Vite 2.0 Vue-Router 4.0 TypeScript elementPlus admin 须弥戒后台案例小结
  14. [CF438D]The Child and Sequence
  15. 测试驱动开发(TDD)在海外组的实践总结
  16. 使用FTP进行主机与Linux的文件传输
  17. 基于CT107D开发板的控制ne555方波发生器输出200Hz-20kHz频率
  18. Unity FPS显示工具
  19. 余三码和余三循环码的简单理解
  20. 设备Kingston DataTraveler 3.0无法连接到理想的主机控制器。将尝试将该设备连接到可用的最佳主机控制器......

热门文章

  1. leetcode 650. 2 Keys Keyboard | 650. 只有两个键的键盘(暴力递归->傻缓存->DP)
  2. leetcode 557. 反转字符串中的单词 III(Java版)
  3. 数据结构:严蔚敏、殷人昆快速排序规则不同的疑问
  4. CPU缓存一致性协议MESI - 笔记
  5. 【BootCDN】前端使用开源免费的 CDN 加速服务
  6. Spring Boot JPA中java 8 的应用
  7. linux 等待信号,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  8. 01. elastcsearch-monitor (es 监控)
  9. 蓝桥练习-算法训练 Collecting Luggage
  10. 【最新合集】PAT乙级最优题解(题解+解析+代码)