百度文库下载需要券,或者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一键免费下载相关推荐

  1. 推荐一个免费下载神器!你还在付费下载百度文库、豆丁文档吗?

    推荐一个很厉害的神器:冰点文库助手.它可以免费下载百度文库.豆丁文档.道客巴巴等各种网站几亿份文档!!!甚至大部分付费文档都可以下载!逆天了有没有!电脑下载,把需要下载的文档网址复制到软件的输入框即可 ...

  2. php如何将文档转成flas,PHP_PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash),本文实例讲述了PHP实现仿百度 - phpStudy...

    PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash) 本文实例讲述了PHP实现仿百度文库,豆丁在线文档效果.分享给大家供大家参考,具体如下: 由于项目要实现类似百度文库的 ...

  3. 仿百度文库、豆丁文档网站源码在线文档分享系统最新版+带全套工具

    非常棒的一套在线文档分享系统源码,仿百度文库.豆丁文档网站源码,在这里完全免费提供给大家学习.在这里无需任何币就可以下载到非常多的精品源码,如果觉得好站长资源做的不错,请帮忙推荐给更多的站长朋友. 此 ...

  4. python可以下载百度文库_百度文库随便下载,解除限制

    阅读须知:文章介绍的软件下载地址载文末,需要复制链接到浏览器打开 今天有小伙伴在群里问有没有百度文库的下载工具,其实之前推荐过,但目前有新的工具出现了,而且更加好用,所以给大家更新一下 百度文档0.9 ...

  5. 百度文库里面的文档无法复制,如果要下载需要下载券,如何免费复制文档呢?

    本人按照公司领导要求,去网上找一个公司软件工程质量管理体系说明的说明书 但是 1.下载需要下载券,我又不是经常下载,开通vip不舍得 2.复制又复制不了 解决方案 1.把这个文档的名称,完完整整的输入 ...

  6. VSD2PDF源代码,帮做你做好类似百度文库的在线文档浏览器

    VSD文档转换成PDF并不是很难的事情,但在很多地方教你制作百度文库这样类似在线文档浏览器的时候,并没有告诉你怎么将VSD文档转换成SWF文档,其实VSD文档并不能直接转换成SWF文档,不管是java ...

  7. python面向对象编程指南 豆瓣_一文看懂Python面向对象编程(Python学习与新手入门必看)-绝对原创...

    尽管网上有许多关于Python面向对像的编程介绍,小编我看完后总觉得不是很满意,也不过瘾,所以决定自己亲自动手写篇文章,帮你理解Python面向对象的编程的基本概念和核心思想.本文内含很多实例代码,以 ...

  8. 免费下载文库原格式文档![技术福利]

    点击蓝字关注这个神奇的公众号- 成猿之路 学习编程技术,关注这个公众号足够了   前言 近期有很多的小伙伴问小编,如何才能免费的下载百度文库收费的文档呢,相信很多的小伙伴都遇到类似的问题,遇到自己需要 ...

  9. 一键免费下载全网在线视频素材,自己动手丰衣足食

    最近经常分享一个下载视频和音乐的下载方法,今天看到这个震惊了. 一键免费下载全网在线视频素材,自己动手丰衣足食

  10. selenium python文档_selenium+python实现百度文库word文档抓取

    更新这个代码最近又改了一点,另外和其他一些小程序一起放在了一个jupyter notebook里,现在挂在github上面.github现在对jupyter notebook的支持非常的好,甚至可以直 ...

最新文章

  1. Java(21)_ ^、|、运算符
  2. 面试题之丑数的C++实现求解(孤陋寡闻了,才知道丑数这么high的东东)
  3. hybris backoffice创建product遇到的synchronization问题和解答
  4. 一个简单的单例模式的类
  5. 工作34:第三方登录
  6. 实时数仓Hologres首次走进阿里淘特双11
  7. C++结构体作为函数参数传参
  8. 【Python】Python实战从入门到精通之一 -- 教你深入理解Python中的变量和数据类型
  9. bmp转YUV RGB转YUV HM学习
  10. c语言中 函数值类型的定义可以,C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是...
  11. java飞机大战子弹怎么修改_java改版飞机大战源码
  12. win11怎么解除网络限制 windows11解除网络限制的设置方法
  13. java中强制类型转换
  14. 更换介质:请把标有“Debian GNU/Linux 10.2.0 _Buster_ - Officia的盘片插入驱动器“/media/cdrom/”再按「回车」键
  15. 过滤钩子驱动程序一(微软DDK文档,FLASHSKY翻译)
  16. php 解析lrc文件格式,C#解析Lrc歌词文件过程详解
  17. python如何打开excel表格_python怎么读取excel表格
  18. 使用github创建个人网站
  19. WallPaperAbyss爬虫
  20. VMBox加载拷贝的vid报错E_INVALIDARG (0x80070057) Cannot register the hard disk 'D:\VMBox\win7.vdi' {7bca5a3

热门文章

  1. php代码审计工具+seay,代码审计利器-Seay源代码审计系统
  2. Hibernate框架概述SSH框架工作原理以及流程
  3. Android开发笔记——快速入门(从入门ACT到Fragment放肆)
  4. Java经典算法题(一,kafka权威指南百度网盘
  5. 计算机 画图软件 快捷键大全,教你完整版电脑CAD快捷键大全
  6. 为什么调试的时候需要编译选项中添加 -g,readelf命令.
  7. Teigha4.0数据结构和读取
  8. Matlab实现Compow协议,optisystem和matlab协同仿真
  9. 【滤波跟踪】捷联惯导纯惯导解算matlab实现
  10. 语法分析器的生成器——Bison