欢迎光临散文网 会员登陆 & 注册

如何用爬虫攻克令人讨厌的百度文库?(菜鸟向)

2023-08-14 22:50 作者:账户已欠费  | 我要投稿

天下苦百度文库久矣!

    不知从何时起,想从百度文库下载一份文档都成了非常困难的事情。每当我看到需要的文本而灵感大发,兴奋地Ctrl+C、V时,却发现,诶嘿!!啥也妹有😅。。。

   我气地抓耳挠腮,想上B站找有什么免费下载器,铺天盖地而来的却是一大堆垃圾宣传,什么“公众号”“回复”之类的。所以迫于无奈只好自己写了一点点小东西。

重要的事情说三遍:

    下载链接在文章末尾!

    下载链接在文章末尾!!

    下载链接在文章末尾!!!


攻克经历

  • 1.寻找数据

      随便找一篇百度文库的文档。这里就以《2022立秋节气的风俗及养生知识》(文档ID:041145275b1b6bd97f192279168884868662b87b)为例,打开F12,在元素界面搜索文档内容,就会发现:啥也搜不到捏😊

        这是因为百度文库中的文档都是JavaScript动态加载的,在浏览器(Edge)中关闭JavaScript后回来看就会发现:


    百度文库只剩一个壳了,啥也没有。

        顺便提一嘴,很多一复制就弹窗要会员、登录的网站只要把JS关了就能随便复制了。


        翻一翻网络选项卡,在搜索中搜索文档内容,就能在文档选项下找到一份文档:


    这个文档应该对应了页面中加载的文本,所以只有前几页已加载的内容中的文本.到这一步,已经能够拿到一部分数据了,但是 , 做事就要做绝!

    鉴于本人为新手,就开始了为30分钟的无强度学习。东拼西凑的知识,最后ChatGPT告诉我:

    异步加载: 很多现代网站使用异步加载技术,如 AJAX(Asynchronous JavaScript and XML)来实现页面的动态更新。通过异步加载,网页可以在不刷新整个页面的情况下,只更新部分内容,从而提升用户体验和页面加载速度。--------ChatGPT

然后,我尝试点击 "展开全文" 按钮,然后,很快啊,一个新的可疑的请求引起了我的注意:



    分析响应的内容,就能发现,这是一个json格式的响应,其中的pageIndex代表了页码,pageLoadUrl则代表了每一页的文本加载的URL,随便点开一个URL,就能发现一大堆Unidoce编码的汉字:

{"c":"\u65b9\u5f0f\u5728\u79cb\u5b63\u683d\u79cd\u7684\u841d\u535c\u662f\u6700\u597d\u5403\u7684\uff0c\u7279\u522b\u662f\u971c\u6253\u4ee5\u540e\u3002\u800c\u4ece\u516b\u6708\u4efd\u4e0b",

用在线工具解码后就可以发现:


成功!

理论存在,实践开始!!


程序部分(python



 经典




实验后发现,上面请求的URL可以简化为只有文档id一个参数的地址,pn为页数,但是一般免费的文档都不会超过100页:



  这里直接用json库解析数据了,把每一页的URL存入一个列表:


    

请求每一页的文本,并进行一点文本处理:



使用BeautifulSoup库处理主页,取得文档的标题:




ppt类文档可获取图片:




文件的存储路径:





外加一大堆的bug处理...😅




重要问题1

太伟大了,一针见血!


然后,

我的程序(屎山),

终于,

初现雏形了!


 成果展示



文本


《2022立秋节气的风俗及养生知识》


PPT



《夏日作文》

                                                        



下载链接

源代码(推荐):https://github.com/TinkerAC/Baiduwenku-downlload.git


蓝奏云:https://wwpn.lanzouw.com/iGRFv15e56re

密码:hj75

(如果你想直接运行的话)



免责声明

1. 本脚本仅用于学习交流使用。作者不对脚本的任何误用或滥用承担任何责任。

2. 本脚本可能存在错误和缺陷,作者不对其准确性、完整性或适用性做出任何保证。

3. 本脚本的使用风险由用户自行承担。作者不对因使用本脚本而导致的任何损失、损害或问题负责。

4. 用户在使用本脚本时,应遵守所有适用的法律法规和道德标准。任何非法或滥用行为均与作者无关。

5. 本脚本可能会涉及第三方库、工具或资源,这些资源受到其各自的许可协议约束。用户需遵守相关许可协议。

请注意,本免责声明可能会根据需要进行调整和修改。作者保留在任何时候修改免责声明的权利。继续使用本脚本将被视为您已经同意了任何修改后的免责声明。

最后,作者对您使用本程序的结果不承担任何责任。感谢您的理解和合作。

结尾

    小声BB:作者第一次写文章,做的不好还请见谅,好用的话别忘了支持一下哦!

大佬们看一乐就好了,作者的编程水平还有待提升👉🤣

欢迎小伙伴们在地下评论留言哦!




(●'◡'●)

    


如何用爬虫攻克令人讨厌的百度文库?(菜鸟向)的评论 (共 条)

分享到微博请遵守国家法律