最近幼稚鬼一直苦心研究,怎么给大家发放更多的资料和资源链接。大家都知道,百度云的分享链接是很容易被和谐的,群里除了分享链接外,就是各种抱怨 “怎么又失效了”,“又和谐了...”。顺便说一句哈~小编的python学习交流裙:399+288+541(邀请码:幼稚鬼),欢迎大家来裙里交流哦~本着学习和研究的初心,幼稚鬼开始研究怎样自动爬取微信群的消息并自动转存到自己的云盘。

需求:

1、爬取微信群里的百度云分享链接2、将资源转存到自己的网盘

涉及:1、正则表达式2、如何分析cookie和api3、selenium(webdriver)

本篇文章目录:1.、爬取微信群聊信息里的网盘资源2、寻找并分析百度云的转存api3、爬取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:0}}";yunData.SHARE_UK = "{{140959320:0}}"; // 经过对比,这就是我们要的 "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对微信云数据库_如何用python看看女神的微信百度云里面有啥?相关推荐

  1. 用python做舆情分析系统_如何用Python做舆情时间序列可视化?

    如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧. 痛点 你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价.从前,你苦恼的是顾客不爱写评价.最 ...

  2. python情绪分析的意义_如何用Python和R对故事情节做情绪分析?

    想知道一部没看过的影视剧能否符合自己口味,却又怕被剧透?没关系,我们可以用情绪分析来了解故事情节是否足够跌宕起伏.本文一步步教你如何用Python和R轻松愉快完成文本情绪分析.一起来试试吧. 烦恼 追 ...

  3. python提取pdf文件内容_如何用Python批量提取PDF文本内容?

    本文为你展示,如何用Python把许多PDF文件的文本内容批量提取出来,并且整理存储到数据框中,以便于后续的数据分析. 问题 最近,读者们在后台的留言,愈发五花八门了. 写了几篇关于自然语言处理的文章 ...

  4. python调用有道翻译_如何用python“优雅的”调用有道翻译?

    前言 其实在以前就盯上有道翻译了的,但是由于时间问题一直没有研究(我的骚操作还在后面,记得关注),本文主要讲解如何用python调用有道翻译,讲解这个爬虫与有道翻译的js"斗争"的 ...

  5. python中文模糊关键词提取_如何用Python提取中文关键词?

    本文一步步为你演示,如何用Python从中文文本中提取关键词.如果你需要对长文"观其大略",不妨尝试一下. 需求 好友最近对自然语言处理感兴趣,因为他打算利用自动化方法从长文本里提 ...

  6. 用python做一个车牌识别_如何用 Python 识别车牌

    车牌识别在高速公路中有着广泛的应用,比如我们常见的电子收费(ETC)系统和交通违章车辆的检测,除此之外像小区或地下车库门禁也会用到,基本上凡是需要对车辆进行身份检测的地方都会用到. 简介 车牌识别系统 ...

  7. python能制作游戏吗_如何用python写一个小游戏

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 引言最近python语言大火,除了在科学计算领域python有用武之地之外,在游 ...

  8. python批量resize图片大小_如何用Python智能批量压缩图片?

    本文一步步为你介绍,如何用Python自动判断多张图片中哪些超出阈值需要压缩,且保持宽高比.如果你想了解Python图像处理的基础知识,欢迎动手来尝试. 痛点 我喜欢用Markdown写文稿,然后发布 ...

  9. python write 写多行_如何用 Python 执行单行命令

    一般来说,面对日常处理的一些小任务,直接用 sed,grep 之类的就可以搞定,更复杂一点的就会考虑 awk 或者用一些现成的轮子,要是 awk 搞不定我就只好用 Python 了.但有些时候,我仅仅 ...

最新文章

  1. 显著性图matlab,cvpr14_saliency_code 2014上的关于图像显著性区域的检测matlab代码。 271万源代码下载- www.pudn.com...
  2. Co-occurrence网络图在R中的实现
  3. mmz-asio4delphi死链接的解决办法
  4. C盘下什么文件能删除?
  5. http路径转file会变成反斜杠_PHP session反序列化漏洞
  6. Java中Map类型数据使用LinkedHashMap保留数据的插入顺序
  7. Tensorboard on Server
  8. boost::mp11::tuple_for_each相关用法的测试程序
  9. 【C++】Visual Studio教程(十二) -代码编辑器功能
  10. android 变量Map集合
  11. 计算bom的准确用量
  12. github上的优秀项目和开发环境配置【转http://www.cnblogs.com/2018/archive/2012/11/09/2763119.html】...
  13. 【转载】飞鸽传书2013官方下载
  14. flex学习网站大全(转)
  15. 【js】event(事件对象)详解
  16. 22. javacript高级程序设计-高级技巧
  17. [可靠消息]2020美赛结果公布时间
  18. 修改Linux里的hosts文件
  19. 外贸人写开发信会犯的错误,你中了哪几个
  20. 关于RSS的聚合---OPML

热门文章

  1. python false 0_python float(0) is 0.0 为什么是 False?
  2. python3读取csv和xlsx文件
  3. Flask框架(1.flask概述,Windows配置 virtualenv虚拟环境步骤和路由以及视图函数的定义)
  4. OpenCASCADE:网格之BRepMesh 架构
  5. OpenCASCADE:适用于 iOS 的 OCCT 示例
  6. boost::type_erasure::relaxed相关的测试程序
  7. boost::spirit::karma::detail::format_manip相关的测试程序
  8. boost::hana::extend用法的测试程序
  9. boost::gil::pixels_are_compatible用法的测试程序
  10. boost::geometry::is_convex用法的测试程序