python可以下载百度文库_百度文档,用Python一键免费下载
百度文库下载需要券,或者vip才能下载
Vip价格高,偶尔下载一次不划算。
不下载复制?不好意思复制也需要vip否则只能一次复制两行。
如何才能以最低成本获取到百度文库里的文档内容呢?
当然是用Python啦!
接下来教大家如何使用Python免费下载百度文档。
由于百度文库的内容是通过网页展示的,那我们猜他是通过后台加载进来的。可以先通过Ctrl+u查看HTML源码,看源码里面是否有文档数据。很遗憾HTML源码里面并没有文档内容。
确定不是通过HTML加载的之后,我们就可以大胆的猜测他是通过json异步加载。所以通过F12打开开发者管理工具network抓包,查看页面加载过程请求的URL。这里会有大量的请求,但是我们仔细观察会发现有一个0.json的URL返回的数据就是文档的文本数据。
拿到请求文档数据的URL后需要确定URL参数。通过查看headers确定请求方式为GET请求。请求参数里x-bce-range和token是变动的,其他都是固定不变。
token这个东西很多时候都会写入到HTML页面里去,用途是防csrf攻击。但是百度文档里面的token有什么用我们不用关心,重要的是这个token那里来。去HTML源代码里查看这两个变量能不能获取到。
果然,在HTML源码里有一段js代码,其中就包含了所有请求文档的URL。看起来有点像,但还是不一样啊!其实这里是包含了转移符 \ ,还有一个比较奇怪的 \x22 其实是一个双引号。把这段不规范的json数据提取出来替换掉 \ 和 \x22就是一个标准的json格式数据。
提取文档数据URL代码实现
def get_document():
# 文库url
url = "https://wenku.baidu.com/view/eefef92fa1116c175f0e7cd184254b35eefd1a97.html?from=search"
sess = requests.Session()
html = sess.get(url).content.decode("gbk")
# 抓取到文档标题
title = re.search('id="doc-tittle-0">(.*?)', html).group(1)
# 使用正则提取 文档内容的url
res = re.search("WkInfo.htmlUrls = '(.*)'", html).group(1)
# \\x22是linux中的引号,替换成Python中的引号
res = res.replace("\\x22", "\"")
# 转成字典
data = json.loads(res)
拿到URL之后继续发送请求获取文档数据,文档数据是分段保存到json里面的,json里面的数据如下图所示。
字段解释:
c: 数据
p: 位置
r: 暂时不确定作用
s: 字体样式
t: 数据格式(word文本,pic图片)
ps: 样式,_enter:1 表示换行,同一段的文本ps值为空
由于图片加载比较特殊,有时候可能通过一个请求加载两张图片,不好确定图片的位置,所以这里暂且不考虑图片,我们只抓取文本。
def get_document():
# ....省略前面代码
# 新建一个文档
document = Document()
string = ""
for i in data["json"]:
url = i["pageLoadUrl"] # 获取到url
url = url.replace("\\", "") # url中有转义符\去掉
# 请求文档内容
data = requests.get(url).content.decode("utf-8")
# 提取文本数据
res = re.search("wenku_\d*\((.*)\)", data, re.S).group(1)
# 将json对象数据转成Python对象
data = json.loads(res)
for i in data['body']:
# 判断数据是什么类型
if i["t"] == "word":
# 获取到文本
string += str(i["c"])
# ps中不为空并且_enter==1的时候是换行也就是一段内容
if i["ps"] and i["ps"].get("_enter") == 1:
document.add_paragraph(string) # 将一段内容写入到word
string = "" # 重新复制 "" 表示新的一段文本
# 保存word
document.save(title + ".docx")
到这里就已经可以把一个百度文档的文本内容完整下载下来。
网上随机选一篇文档来测试效果,纯文本的文档效果贼好。缺点就是不能同时下载图片插入到word里面去。
python可以下载百度文库_百度文档,用Python一键免费下载相关推荐
- 推荐一个免费下载神器!你还在付费下载百度文库、豆丁文档吗?
推荐一个很厉害的神器:冰点文库助手.它可以免费下载百度文库.豆丁文档.道客巴巴等各种网站几亿份文档!!!甚至大部分付费文档都可以下载!逆天了有没有!电脑下载,把需要下载的文档网址复制到软件的输入框即可 ...
- php如何将文档转成flas,PHP_PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash),本文实例讲述了PHP实现仿百度 - phpStudy...
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash) 本文实例讲述了PHP实现仿百度文库,豆丁在线文档效果.分享给大家供大家参考,具体如下: 由于项目要实现类似百度文库的 ...
- 仿百度文库、豆丁文档网站源码在线文档分享系统最新版+带全套工具
非常棒的一套在线文档分享系统源码,仿百度文库.豆丁文档网站源码,在这里完全免费提供给大家学习.在这里无需任何币就可以下载到非常多的精品源码,如果觉得好站长资源做的不错,请帮忙推荐给更多的站长朋友. 此 ...
- python可以下载百度文库_百度文库随便下载,解除限制
阅读须知:文章介绍的软件下载地址载文末,需要复制链接到浏览器打开 今天有小伙伴在群里问有没有百度文库的下载工具,其实之前推荐过,但目前有新的工具出现了,而且更加好用,所以给大家更新一下 百度文档0.9 ...
- 百度文库里面的文档无法复制,如果要下载需要下载券,如何免费复制文档呢?
本人按照公司领导要求,去网上找一个公司软件工程质量管理体系说明的说明书 但是 1.下载需要下载券,我又不是经常下载,开通vip不舍得 2.复制又复制不了 解决方案 1.把这个文档的名称,完完整整的输入 ...
- VSD2PDF源代码,帮做你做好类似百度文库的在线文档浏览器
VSD文档转换成PDF并不是很难的事情,但在很多地方教你制作百度文库这样类似在线文档浏览器的时候,并没有告诉你怎么将VSD文档转换成SWF文档,其实VSD文档并不能直接转换成SWF文档,不管是java ...
- python面向对象编程指南 豆瓣_一文看懂Python面向对象编程(Python学习与新手入门必看)-绝对原创...
尽管网上有许多关于Python面向对像的编程介绍,小编我看完后总觉得不是很满意,也不过瘾,所以决定自己亲自动手写篇文章,帮你理解Python面向对象的编程的基本概念和核心思想.本文内含很多实例代码,以 ...
- 免费下载文库原格式文档![技术福利]
点击蓝字关注这个神奇的公众号- 成猿之路 学习编程技术,关注这个公众号足够了 前言 近期有很多的小伙伴问小编,如何才能免费的下载百度文库收费的文档呢,相信很多的小伙伴都遇到类似的问题,遇到自己需要 ...
- 一键免费下载全网在线视频素材,自己动手丰衣足食
最近经常分享一个下载视频和音乐的下载方法,今天看到这个震惊了. 一键免费下载全网在线视频素材,自己动手丰衣足食
- selenium python文档_selenium+python实现百度文库word文档抓取
更新这个代码最近又改了一点,另外和其他一些小程序一起放在了一个jupyter notebook里,现在挂在github上面.github现在对jupyter notebook的支持非常的好,甚至可以直 ...
最新文章
- Java(21)_ ^、|、运算符
- 面试题之丑数的C++实现求解(孤陋寡闻了,才知道丑数这么high的东东)
- hybris backoffice创建product遇到的synchronization问题和解答
- 一个简单的单例模式的类
- 工作34:第三方登录
- 实时数仓Hologres首次走进阿里淘特双11
- C++结构体作为函数参数传参
- 【Python】Python实战从入门到精通之一 -- 教你深入理解Python中的变量和数据类型
- bmp转YUV RGB转YUV HM学习
- c语言中 函数值类型的定义可以,C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是...
- java飞机大战子弹怎么修改_java改版飞机大战源码
- win11怎么解除网络限制 windows11解除网络限制的设置方法
- java中强制类型转换
- 更换介质:请把标有“Debian GNU/Linux 10.2.0 _Buster_ - Officia的盘片插入驱动器“/media/cdrom/”再按「回车」键
- 过滤钩子驱动程序一(微软DDK文档,FLASHSKY翻译)
- php 解析lrc文件格式,C#解析Lrc歌词文件过程详解
- python如何打开excel表格_python怎么读取excel表格
- 使用github创建个人网站
- WallPaperAbyss爬虫
- VMBox加载拷贝的vid报错E_INVALIDARG (0x80070057) Cannot register the hard disk 'D:\VMBox\win7.vdi' {7bca5a3
热门文章
- php代码审计工具+seay,代码审计利器-Seay源代码审计系统
- Hibernate框架概述SSH框架工作原理以及流程
- Android开发笔记——快速入门(从入门ACT到Fragment放肆)
- Java经典算法题(一,kafka权威指南百度网盘
- 计算机 画图软件 快捷键大全,教你完整版电脑CAD快捷键大全
- 为什么调试的时候需要编译选项中添加 -g,readelf命令.
- Teigha4.0数据结构和读取
- Matlab实现Compow协议,optisystem和matlab协同仿真
- 【滤波跟踪】捷联惯导纯惯导解算matlab实现
- 语法分析器的生成器——Bison